Deleted Added
full compact
basename.c (92920) basename.c (99137)
1/*-
2 * Copyright (c) 1991, 1993, 1994
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 30 unchanged lines hidden (view full) ---

39
40#if 0
41#ifndef lint
42static char sccsid[] = "@(#)basename.c 8.4 (Berkeley) 5/4/95";
43#endif /* not lint */
44#endif
45
46#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 1991, 1993, 1994
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 30 unchanged lines hidden (view full) ---

39
40#if 0
41#ifndef lint
42static char sccsid[] = "@(#)basename.c 8.4 (Berkeley) 5/4/95";
43#endif /* not lint */
44#endif
45
46#include <sys/cdefs.h>
47__FBSDID("$FreeBSD: head/usr.bin/basename/basename.c 92920 2002-03-22 01:22:50Z imp $");
47__FBSDID("$FreeBSD: head/usr.bin/basename/basename.c 99137 2002-06-30 13:40:35Z jmallett $");
48
49#include <err.h>
50#include <libgen.h>
51#include <stdio.h>
52#include <stdlib.h>
53#include <string.h>
54#include <unistd.h>
55
56int main(int, char **);
57void usage(void);
58
59int
60main(argc, argv)
61 int argc;
62 char **argv;
63{
48
49#include <err.h>
50#include <libgen.h>
51#include <stdio.h>
52#include <stdlib.h>
53#include <string.h>
54#include <unistd.h>
55
56int main(int, char **);
57void usage(void);
58
59int
60main(argc, argv)
61 int argc;
62 char **argv;
63{
64 char *p, *q;
65 int ch;
64 char *p, *q, *suffix;
65 size_t suffixlen;
66 int aflag, ch;
66
67
67 while ((ch = getopt(argc, argv, "")) != -1)
68 aflag = 0;
69 suffix = NULL;
70 suffixlen = 0;
71
72 while ((ch = getopt(argc, argv, "as:")) != -1)
68 switch(ch) {
73 switch(ch) {
74 case 'a':
75 aflag = 1;
76 break;
77 case 's':
78 suffix = optarg;
79 break;
69 case '?':
70 default:
71 usage();
72 }
73 argc -= optind;
74 argv += optind;
75
80 case '?':
81 default:
82 usage();
83 }
84 argc -= optind;
85 argv += optind;
86
76 if (argc != 1 && argc != 2)
87 if (argc < 1)
77 usage();
78
79 if (!*argv[0]) {
80 printf("\n");
81 exit(0);
82 }
83 if ((p = basename(argv[0])) == NULL)
84 err(1, "%s", argv[0]);
88 usage();
89
90 if (!*argv[0]) {
91 printf("\n");
92 exit(0);
93 }
94 if ((p = basename(argv[0])) == NULL)
95 err(1, "%s", argv[0]);
85 if (*++argv && (q = strchr(p, '\0') - strlen(*argv)) > p &&
86 strcmp(*argv, q) == 0)
96 if ((suffix == NULL && !aflag) && argc == 2) {
97 suffix = argv[1];
98 argc--;
99 }
100 if (suffix != NULL)
101 suffixlen = strlen(suffix);
102 while (argc--) {
103 if ((p = basename(*argv)) == NULL)
104 err(1, "%s", argv[0]);
105 if (suffixlen && (q = strchr(p, '\0') - suffixlen) > p &&
106 strcmp(suffix, q) == 0)
87 *q = '\0';
107 *q = '\0';
88 (void)printf("%s\n", p);
108 argv++;
109 (void)printf("%s\n", p);
110 }
89 exit(0);
90}
91
92void
93usage()
94{
95
111 exit(0);
112}
113
114void
115usage()
116{
117
96 (void)fprintf(stderr, "usage: basename string [suffix]\n");
118 (void)fprintf(stderr,
119"usage: basename string [suffix]\n"
120" basename [-a] [-s suffix] string [...]\n");
97 exit(1);
98}
121 exit(1);
122}