| iMatix home page | << | < | > | >> |
SFL Version 2.11 |
#include "sflfile.h" char * file_exec_name ( const char *filename)
If the specified filename is an executable program, formats a filename including any required extension and returns a static string with that value. If the specified filename is not an executable program, returns NULL. Under DOS, and Windows, appends ".com", ".exe", and ".bat" to the filename, in that order, to build a possible executable filename. Under OS/2, appends ".exe", and ".cmd" to the filename, in that order, to build a possible executable filename. If this fails, returns NULL. Does not search the PATH symbol; the filename must be specified with a path if necessary. The returned filename (if not NULL) points to a static string.
{ #if (defined (__UNIX__) || defined (__VMS__)) ASSERT (filename); strcpy (exec_name, filename); if (file_mode (exec_name) & S_IEXEC) return (exec_name); else return (NULL); #elif (defined (MSDOS_FILESYSTEM)) char *extension; /* File extension, if any */ ASSERT (filename); /* Find file extension; if not found, set extension to empty string */ extension = strrchr (filename, '.'); if (extension == NULL || strchr (extension, '/') /* If last '.' is part of the path */ || strchr (extension, '\\')) /* then the filename has no ext. */ extension = ""; /* Windows: If extension is .exe/.com/.bat, the file is an executable */ /* OS/2: If extension is .exe/.cmd, the file is executable */ # if (defined (__OS2__)) if (lexcmp (extension, ".exe") == 0 || lexcmp (extension, ".cmd") == 0 # else /* DOS, WINDOWS */ if (lexcmp (extension, ".com") == 0 || lexcmp (extension, ".exe") == 0 || lexcmp (extension, ".bat") == 0 # if (defined (__WINDOWS__)) || is_exe_file (filename) # endif # endif ) { strcpy (exec_name, filename); return (exec_name); } else /* Windows: If the extension is empty, try .com, .exe, .bat */ /* OS/2: If the extension is empty, try .exe, .cmd */ if (strnull (extension) # if (defined (__OS2__)) && (file exists (default extension (exec_name, filename, "exe")) || file exists (default extension (exec_name, filename, "cmd")))) # else /* DOS, WINDOWS */ && (file exists (default extension (exec_name, filename, "com")) || file exists (default extension (exec_name, filename, "exe")) || file exists (default extension (exec_name, filename, "bat")))) # endif return (exec_name); /* Executable file found */ else return (NULL); #else return (NULL); /* Not supported on this system */ #endif }
| << | < | > | >> | Copyright © 1996-2000 iMatix Corporation |