home *** CD-ROM | disk | FTP | other *** search
/ Zodiac Super OZ / MEDIADEPOT.ISO / FILES / 16 / FREEDOS.ZIP / FD_A4PRE.ZIP / SOURCE / MICROC.ZIP / FSPLIT.C < prev    next >
Text File  |  1995-05-21  |  1KB  |  67 lines

  1. #define ERROR     0x01
  2. #define EXTENSION 0x02
  3. #define FILENAME  0x04
  4. #define DIRECTORY 0x08
  5. #define DRIVE     0x10
  6.  
  7. int fnsplit (char *filename, char *drive, char *dir, char *name, char *ext)
  8.  
  9. {
  10.     int i;
  11.     char buf[MAX_STR];
  12.  
  13.     strcpy (buf, filename);
  14.  
  15.     if (strchr (buf, ':'))
  16.         {
  17.         strncpy (drive, buf, 1);
  18.         drive[1] = '\0';
  19.         strcat (drive, ":");
  20.         strcpy (buf, strchr(buf, ':') + 1);
  21.         }
  22.     else
  23.         strcpy (drive, "\0");
  24.  
  25.     if (strchr (buf, '.'))
  26.         {
  27.         strcpy (ext, strchr (buf, '.'));
  28.         buf[strcspn (buf, ".")] = '\0';
  29.         }
  30.     else
  31.         strcpy (ext, "\0");
  32.  
  33.     if ((strchr (buf, '\\')) || (strchr (buf, '/')))
  34.         {
  35.         strrev (buf);
  36.         strcpy (dir, strpbrk (buf, "/\\"));
  37.         buf[strcspn (buf, "/\\")] = '\0';
  38.         strrev (dir);
  39.         strrev (buf);
  40.         }
  41.     else 
  42.         strcpy (dir, "\0");
  43.  
  44.     strcpy (name, buf);
  45.  
  46.     return (i);
  47. }
  48.  
  49. #ifdef TEST
  50.  
  51. main (int argc, char **argv)
  52.  
  53. {
  54.  
  55. char drive[80], path[80], name[80], ext[80];
  56.  
  57. fnsplit (argv[1], drive, path, name, ext);
  58.  
  59. printf ("Expanding %s...\n", argv[1]);
  60. printf ("drive = %s %04x %d\n", drive, drive[0], drive[0]);
  61. printf ("path = %s %04x %d\n", path, path[0], path[0]);
  62. printf ("name = %s %04x %d\n", name, name[0], name[0]);
  63. printf ("ext = %s %04x %d\n", ext, ext[0], ext[0]);
  64.  
  65. }
  66.  
  67. #endif