- s = xmalloc (p - file_name + 1);
- memcpy (s, file_name, p - file_name);
- s[p - file_name] = 0;
-
- return s;
-}
-
-/* Returns the extension part of FILE_NAME as a malloc()'d string.
- If FILE_NAME does not have an extension, returns an empty
- string. */
-char *
-fn_extension (const char *file_name)
-{
- const char *extension = strrchr (file_name, '.');
- if (extension == NULL)
- extension = "";
- return xstrdup (extension);
-}
-\f
-#if unix
-/* Returns the current working directory, as a malloc()'d string.
- From libc.info. */
-char *
-fn_get_cwd (void)
-{
- int size = 100;
- char *buffer = xmalloc (size);
-
- for (;;)
- {
- char *value = getcwd (buffer, size);
- if (value != 0)
- return buffer;
-
- size *= 2;
- free (buffer);
- buffer = xmalloc (size);
- }
-}
-#else
-char *
-fn_get_cwd (void)
-{
- int size = 2;
- char *buffer = xmalloc (size);
- if ( buffer)
- {
- buffer[0]='.';
- buffer[1]='\0';
- }
-
- return buffer;
-
-}
-#endif
-\f
-/* Find out information about files. */
-
-/* Returns nonzero iff NAME specifies an absolute file name. */
-int
-fn_is_absolute (const char *name)
-{
-#ifdef unix
- if (name[0] == '/'
- || !strncmp (name, "./", 2)
- || !strncmp (name, "../", 3)
- || name[0] == '~')
- return 1;
-#elif defined (__MSDOS__)
- if (name[0] == '\\'
- || !strncmp (name, ".\\", 2)
- || !strncmp (name, "..\\", 3)
- || (name[0] && name[1] == ':'))
- return 1;
-#endif
-
- return 0;