home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional / OS2PRO194.ISO / os2 / prgramer / unix / emx / test / fullpath.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-01-02  |  2.3 KB  |  103 lines

  1. /* fullpath.c (emx+gcc) */
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <getopt.h>
  6. #include <sys/param.h>
  7.  
  8. #define FALSE 0
  9. #define TRUE  1
  10.  
  11. static void usage (void);
  12.  
  13.  
  14. static void usage (void)
  15. {
  16.   fputs ("Usage: [-acsw] fullpath <file> ...\n", stderr);
  17.   exit (1);
  18. }
  19.  
  20.  
  21. int main (int argc, char *argv[])
  22. {
  23.   int c, i, rc, abs_flag, split_flag, cwd_flag, wd_flag;
  24.   char buf[MAXPATHLEN+1];
  25.   char drive[_MAX_DRIVE], dir[_MAX_DIR], fname[_MAX_FNAME], ext[_MAX_EXT];
  26.  
  27.   rc = 0;
  28.   abs_flag = FALSE; split_flag = FALSE; cwd_flag = FALSE; wd_flag = 0;
  29.   while ((c = getopt (argc, argv, "acsw")) != EOF)
  30.     switch (c)
  31.       {
  32.       case 'a':
  33.         abs_flag = TRUE;
  34.         break;
  35.       case 'c':
  36.         cwd_flag = TRUE;
  37.         break;
  38.       case 's':
  39.         split_flag = TRUE;
  40.         break;
  41.       case 'w':
  42.         wd_flag = TRUE;
  43.         break;
  44.       default:
  45.         usage ();
  46.       }
  47.   if (!(optind < argc || cwd_flag || wd_flag))
  48.     usage ();
  49.   if (cwd_flag)
  50.     {
  51.       if (getcwd (buf, sizeof (buf)) != NULL)
  52.         printf ("getcwd: %s\n", buf);
  53.       else
  54.         {
  55.           rc = 2;
  56.           perror ("getcwd");
  57.         }
  58.     }
  59.   if (wd_flag)
  60.     {
  61.       if (getwd (buf) != NULL)
  62.         printf ("getwd: %s\n", buf);
  63.       else
  64.         {
  65.           rc = 2;
  66.           fprintf (stderr, "getwd error: %s\n", buf);
  67.         }
  68.     }
  69.   for (i = optind; i < argc; ++i)
  70.     {
  71.       if (split_flag)
  72.         {
  73.           _splitpath (argv[i], drive, dir, fname, ext);
  74.           printf ("path  = %s\n", argv[i]);
  75.           printf ("drive = %s\n", drive);
  76.           printf ("dir   = %s\n", dir);
  77.           printf ("fname = %s\n", fname);
  78.           printf ("ext   = %s\n", ext);
  79.         }
  80.       if (abs_flag)
  81.         {
  82.           if (_abspath (buf, argv[i], sizeof (buf)) == 0)
  83.             puts (buf);
  84.           else
  85.             {
  86.               rc = 2;
  87.               fprintf (stderr, "abspath %s failed\n", argv[i]);
  88.             }
  89.         }
  90.       else
  91.         {
  92.           if (_fullpath (buf, argv[i], sizeof (buf)) == 0)
  93.             puts (buf);
  94.           else
  95.             {
  96.               rc = 2;
  97.               fprintf (stderr, "fullpath %s failed\n", argv[i]);
  98.             }
  99.         }
  100.     }
  101.   return (rc);
  102. }
  103.