home *** CD-ROM | disk | FTP | other *** search
- /* fullpath.c (emx+gcc) */
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <getopt.h>
- #include <sys/param.h>
-
- #define FALSE 0
- #define TRUE 1
-
- static void usage (void);
-
-
- static void usage (void)
- {
- fputs ("Usage: [-acsw] fullpath <file> ...\n", stderr);
- exit (1);
- }
-
-
- int main (int argc, char *argv[])
- {
- int c, i, rc, abs_flag, split_flag, cwd_flag, wd_flag;
- char buf[MAXPATHLEN+1];
- char drive[_MAX_DRIVE], dir[_MAX_DIR], fname[_MAX_FNAME], ext[_MAX_EXT];
-
- rc = 0;
- abs_flag = FALSE; split_flag = FALSE; cwd_flag = FALSE; wd_flag = 0;
- while ((c = getopt (argc, argv, "acsw")) != EOF)
- switch (c)
- {
- case 'a':
- abs_flag = TRUE;
- break;
- case 'c':
- cwd_flag = TRUE;
- break;
- case 's':
- split_flag = TRUE;
- break;
- case 'w':
- wd_flag = TRUE;
- break;
- default:
- usage ();
- }
- if (!(optind < argc || cwd_flag || wd_flag))
- usage ();
- if (cwd_flag)
- {
- if (getcwd (buf, sizeof (buf)) != NULL)
- printf ("getcwd: %s\n", buf);
- else
- {
- rc = 2;
- perror ("getcwd");
- }
- }
- if (wd_flag)
- {
- if (getwd (buf) != NULL)
- printf ("getwd: %s\n", buf);
- else
- {
- rc = 2;
- fprintf (stderr, "getwd error: %s\n", buf);
- }
- }
- for (i = optind; i < argc; ++i)
- {
- if (split_flag)
- {
- _splitpath (argv[i], drive, dir, fname, ext);
- printf ("path = %s\n", argv[i]);
- printf ("drive = %s\n", drive);
- printf ("dir = %s\n", dir);
- printf ("fname = %s\n", fname);
- printf ("ext = %s\n", ext);
- }
- if (abs_flag)
- {
- if (_abspath (buf, argv[i], sizeof (buf)) == 0)
- puts (buf);
- else
- {
- rc = 2;
- fprintf (stderr, "abspath %s failed\n", argv[i]);
- }
- }
- else
- {
- if (_fullpath (buf, argv[i], sizeof (buf)) == 0)
- puts (buf);
- else
- {
- rc = 2;
- fprintf (stderr, "fullpath %s failed\n", argv[i]);
- }
- }
- }
- return (rc);
- }
-