Improved the ISO level 1 mapping of file names which begin by a dot.
This commit is contained in:
parent
0a8bb0e9b8
commit
269e0b19a5
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2007 Vreixo Formoso
|
* Copyright (c) 2007 Vreixo Formoso
|
||||||
* Copyright (c) 2007 Mario Danic
|
* Copyright (c) 2007 Mario Danic
|
||||||
* Copyright (c) 2009 - 2011 Thomas Schmitt
|
* Copyright (c) 2009 - 2012 Thomas Schmitt
|
||||||
*
|
*
|
||||||
* This file is part of the libisofs project; you can redistribute it and/or
|
* This file is part of the libisofs project; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License version 2
|
* modify it under the terms of the GNU General Public License version 2
|
||||||
@ -714,7 +714,7 @@ char *iso_2_dirid(const char *src)
|
|||||||
return iso_dirid(src, 31);
|
return iso_dirid(src, 31);
|
||||||
}
|
}
|
||||||
|
|
||||||
char *iso_1_fileid(const char *src)
|
char *iso_1_fileid(const char *src, int force_dots)
|
||||||
{
|
{
|
||||||
char *dot; /* Position of the last dot in the filename, will be used
|
char *dot; /* Position of the last dot in the filename, will be used
|
||||||
* to calculate lname and lext. */
|
* to calculate lname and lext. */
|
||||||
@ -725,7 +725,8 @@ char *iso_1_fileid(const char *src)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
dot = strrchr(src, '.');
|
dot = strrchr(src, '.');
|
||||||
|
if (dot == src && strlen(src) > 4)
|
||||||
|
dot = NULL; /* Use the long extension instead of the empty name */
|
||||||
lext = dot ? strlen(dot + 1) : 0;
|
lext = dot ? strlen(dot + 1) : 0;
|
||||||
lname = strlen(src) - lext - (dot ? 1 : 0);
|
lname = strlen(src) - lext - (dot ? 1 : 0);
|
||||||
|
|
||||||
@ -744,7 +745,8 @@ char *iso_1_fileid(const char *src)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* This dot is mandatory, even if there is no extension. */
|
/* This dot is mandatory, even if there is no extension. */
|
||||||
dest[pos++] = '.';
|
if (force_dots || lext > 0)
|
||||||
|
dest[pos++] = '.';
|
||||||
|
|
||||||
/* Convert up to 3 characters of the extension, if any. */
|
/* Convert up to 3 characters of the extension, if any. */
|
||||||
for (i = 0; i < lext && i < 3; i++) {
|
for (i = 0; i < lext && i < 3; i++) {
|
||||||
|
Loading…
Reference in New Issue
Block a user