200 |
{ |
{ |
201 |
const char *res = getenv (envvar); |
const char *res = getenv (envvar); |
202 |
|
|
203 |
#ifdef MSDOS |
#if defined (MSDOS) || defined (_WIN32) |
204 |
const char *cp; |
if (!res) |
|
|
|
|
/* File doesn't exist in current directory; try in INIT directory. */ |
|
|
if (!res && (cp = getenv ("INIT"))) |
|
205 |
{ |
{ |
206 |
res = XMALLOC (char, strlen (cp) + strlen (skeleton_name) + 2); |
/* Skeleton file name without path */ |
207 |
sprintf (res, "%s%c%s", cp, '/', skeleton_name); |
const char *skel_name = strrchr(skeleton_name, '/'); |
208 |
} |
if (!skel_name) |
209 |
#endif /* !MSDOS */ |
skel_name = strrchr(skeleton_name, '\\'); |
210 |
|
if (!skel_name) |
211 |
|
skel_name = skeleton_name; |
212 |
|
else |
213 |
|
++skel_name; |
214 |
|
|
215 |
|
/* File doesn't exist in current directory; try in INIT directory. */ |
216 |
|
const char *cp = getenv ("INIT"); |
217 |
|
if (cp) |
218 |
|
{ |
219 |
|
res = XMALLOC (char, strlen (cp) + strlen (skel_name) + 2); |
220 |
|
sprintf (res, "%s%c%s", cp, '\\', skel_name); |
221 |
|
} |
222 |
|
else if (access (skel_name, 4) == 0) /* Look in current dir. */ |
223 |
|
res = skel_name; |
224 |
|
else |
225 |
|
{ |
226 |
|
/* Look in program locations dir. */ |
227 |
|
extern char *program_name; |
228 |
|
cp = strrchr(program_name, '\\'); |
229 |
|
if (!cp) |
230 |
|
return skeleton_name; |
231 |
|
else |
232 |
|
++cp; |
233 |
|
res = XMALLOC (char, cp - program_name + strlen (skel_name) + 1); |
234 |
|
strncpy (res, program_name, cp - program_name); |
235 |
|
strcpy (res + (cp - program_name), skel_name); |
236 |
|
} |
237 |
|
} |
238 |
|
#endif /* defined (MSDOS) || defined (_WIN32) */ |
239 |
if (!res) |
if (!res) |
240 |
res = skeleton_name; |
res = skeleton_name; |
241 |
|
|