1273 |
for (i = 0; directories->list[i] != 0; ++i) |
for (i = 0; directories->list[i] != 0; ++i) |
1274 |
{ |
{ |
1275 |
char *dir = directories->list[i]; |
char *dir = directories->list[i]; |
1276 |
|
char *expanded = 0; |
1277 |
if (dir[0] == '~') |
if (dir[0] == '~') |
1278 |
{ |
{ |
1279 |
char *expanded = tilde_expand (dir); |
expanded = tilde_expand (dir); |
1280 |
if (expanded != 0) |
if (expanded != 0) |
1281 |
dir = expanded; |
dir = expanded; |
1282 |
} |
} |
1283 |
|
#ifdef WINDOWS32 |
1284 |
|
/* WINDOWS32 chdir() doesn't work if the directory has a trailing '/' |
1285 |
|
But allow -C/ just in case someone wants that. */ |
1286 |
|
{ |
1287 |
|
char *p = dir + strlen (dir) - 1; |
1288 |
|
while (p > dir && (p[0] == '/' || p[0] == '\\')) |
1289 |
|
--p; |
1290 |
|
p[1] = '\0'; |
1291 |
|
} |
1292 |
|
#endif |
1293 |
if (chdir (dir) < 0) |
if (chdir (dir) < 0) |
1294 |
pfatal_with_name (dir); |
pfatal_with_name (dir); |
1295 |
if (dir != directories->list[i]) |
if (expanded) |
1296 |
free (dir); |
free (expanded); |
1297 |
} |
} |
1298 |
|
|
1299 |
#ifdef WINDOWS32 |
#ifdef WINDOWS32 |