#define PATHLEN 512
+static void writes(int fd, const char *s)
+{
+ write(fd, s, strlen(s));
+}
/*
* Return TRUE if name is a directory.
char *cp;
static char buf[PATHLEN];
- if ((dirname == NULL) || (*dirname == '\0'))
+ if (dirname == NULL || *dirname == '\0')
return filename;
cp = strrchr(filename, '/');
if (cp)
filename = cp + 1;
- /* FIXME: overflow check */
- strcpy(buf, dirname);
- strcat(buf, "/");
- strcat(buf, filename);
+ strlcpy(buf, dirname, PATHLEN);
+ strlcat(buf, "/", PATHLEN);
+ strlcat(buf, filename, PATHLEN);
return buf;
}
#if defined(S_ISLNK) && 0 /* FIXME */
if (strcmp(argv[1], "-s") == 0) {
if (argc != 4) {
- fprintf(stderr, "%s: wrong number of arguments for symbolic link\n", argv[0]);
+ writes(2, argv[0]);
+ writes(2, ": wrong number of arguments for symbolic link\n");
return 1;
}
}
#endif
- fprintf(stderr, "%s: unknown option %s\n", argv[0], argv[1]);
+ writes(2, argv[0]);
+ writes(2, ": unknown option ");
+ writes(2, argv[1]);
+ write(2, "\n", 1);
return 1;
}
dirflag = isadir(lastarg);
if ((argc > 3) && !dirflag) {
- fprintf(stderr, "%s: not a directory\n", lastarg);
+ writes(2, lastarg);
+ writes(2, ": not a directory\n");
return 1;
}