mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-12-03 14:48:57 +00:00
Fix a bazillion warnings. This makes almost the whole of src/bin/*
WARNS=6, std=c99 clean. Tested on: i386, alpha
This commit is contained in:
parent
f694b8adb6
commit
40feca3a99
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=114583
@ -43,11 +43,11 @@ int revnamecmp(const FTSENT *, const FTSENT *);
|
||||
int statcmp(const FTSENT *, const FTSENT *);
|
||||
int revstatcmp(const FTSENT *, const FTSENT *);
|
||||
|
||||
void printcol(DISPLAY *);
|
||||
void printlong(DISPLAY *);
|
||||
void printcol(const DISPLAY *);
|
||||
void printlong(const DISPLAY *);
|
||||
int printname(const char *);
|
||||
void printscol(DISPLAY *);
|
||||
void printstream(DISPLAY *);
|
||||
void printscol(const DISPLAY *);
|
||||
void printstream(const DISPLAY *);
|
||||
void usage(void);
|
||||
size_t len_octal(const char *, int);
|
||||
int prn_octal(const char *);
|
||||
@ -62,3 +62,4 @@ extern char *ansi_coloff;
|
||||
extern char *attrs_off;
|
||||
extern char *enter_bold;
|
||||
#endif
|
||||
extern int termwidth;
|
||||
|
66
bin/ls/ls.c
66
bin/ls/ls.c
@ -58,6 +58,7 @@ __FBSDID("$FreeBSD$");
|
||||
#include <errno.h>
|
||||
#include <fts.h>
|
||||
#include <grp.h>
|
||||
#include <inttypes.h>
|
||||
#include <limits.h>
|
||||
#include <locale.h>
|
||||
#include <pwd.h>
|
||||
@ -80,12 +81,26 @@ __FBSDID("$FreeBSD$");
|
||||
*/
|
||||
#define STRBUF_SIZEOF(t) (1 + CHAR_BIT * sizeof(t) / 3 + 1)
|
||||
|
||||
static void display(FTSENT *, FTSENT *, int);
|
||||
static u_quad_t makenines(u_long);
|
||||
/*
|
||||
* MAKENINES(n) turns n into (10**n)-1. This is useful for converting a width
|
||||
* into a number that wide in decimal.
|
||||
* XXX: Overflows are not considered.
|
||||
*/
|
||||
#define MAKENINES(n) \
|
||||
do { \
|
||||
intmax_t i; \
|
||||
\
|
||||
/* Use a loop as all values of n are small. */ \
|
||||
for (i = 1; n > 0; i *= 10) \
|
||||
n--; \
|
||||
n = i - 1; \
|
||||
} while(0)
|
||||
|
||||
static void display(const FTSENT *, FTSENT *, int);
|
||||
static int mastercmp(const FTSENT * const *, const FTSENT * const *);
|
||||
static void traverse(int, char **, int);
|
||||
|
||||
static void (*printfcn)(DISPLAY *);
|
||||
static void (*printfcn)(const DISPLAY *);
|
||||
static int (*sortfcn)(const FTSENT *, const FTSENT *);
|
||||
|
||||
long blocksize; /* block size units */
|
||||
@ -114,7 +129,7 @@ static int f_singlecol; /* use single column output */
|
||||
int f_slash; /* similar to f_type, but only for dirs */
|
||||
int f_sortacross; /* sort across rows, not down columns */
|
||||
int f_statustime; /* use time of last mode change */
|
||||
int f_stream; /* stream the output, separate with commas */
|
||||
static int f_stream; /* stream the output, separate with commas */
|
||||
static int f_timesort; /* sort by time vice name */
|
||||
int f_type; /* add type character for non-regular files */
|
||||
static int f_whiteout; /* show whiteout entries */
|
||||
@ -473,10 +488,10 @@ traverse(int argc, char *argv[], int options)
|
||||
*/
|
||||
if (output) {
|
||||
putchar('\n');
|
||||
printname(p->fts_path);
|
||||
(void)printname(p->fts_path);
|
||||
puts(":");
|
||||
} else if (argc > 1) {
|
||||
printname(p->fts_path);
|
||||
(void)printname(p->fts_path);
|
||||
puts(":");
|
||||
output = 1;
|
||||
}
|
||||
@ -499,14 +514,15 @@ traverse(int argc, char *argv[], int options)
|
||||
* points to the parent directory of the display list.
|
||||
*/
|
||||
static void
|
||||
display(FTSENT *p, FTSENT *list, int options)
|
||||
display(const FTSENT *p, FTSENT *list, int options)
|
||||
{
|
||||
struct stat *sp;
|
||||
DISPLAY d;
|
||||
FTSENT *cur;
|
||||
NAMES *np;
|
||||
off_t maxsize;
|
||||
u_long btotal, labelstrlen, maxblock, maxinode, maxlen, maxnlink;
|
||||
long maxblock;
|
||||
u_long btotal, labelstrlen, maxinode, maxlen, maxnlink;
|
||||
u_long maxlabelstr;
|
||||
int bcfile, maxflags;
|
||||
gid_t maxgroup;
|
||||
@ -542,9 +558,10 @@ display(FTSENT *p, FTSENT *list, int options)
|
||||
int ninitmax;
|
||||
|
||||
/* Fill-in "::" as "0:0:0" for the sake of scanf. */
|
||||
jinitmax = initmax2 = malloc(strlen(initmax) * 2 + 2);
|
||||
jinitmax = malloc(strlen(initmax) * 2 + 2);
|
||||
if (jinitmax == NULL)
|
||||
err(1, "malloc");
|
||||
initmax2 = jinitmax;
|
||||
if (*initmax == ':')
|
||||
strcpy(initmax2, "0:"), initmax2 += 2;
|
||||
else
|
||||
@ -563,7 +580,7 @@ display(FTSENT *p, FTSENT *list, int options)
|
||||
strcpy(initmax2, "0");
|
||||
|
||||
ninitmax = sscanf(jinitmax,
|
||||
" %lu : %lu : %lu : %i : %i : %i : %llu : %lu : %lu ",
|
||||
" %lu : %ld : %lu : %u : %u : %i : %jd : %lu : %lu ",
|
||||
&maxinode, &maxblock, &maxnlink, &maxuser,
|
||||
&maxgroup, &maxflags, &maxsize, &maxlen, &maxlabelstr);
|
||||
f_notabs = 1;
|
||||
@ -603,10 +620,10 @@ display(FTSENT *p, FTSENT *list, int options)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
maxinode = makenines(maxinode);
|
||||
maxblock = makenines(maxblock);
|
||||
maxnlink = makenines(maxnlink);
|
||||
maxsize = makenines(maxsize);
|
||||
MAKENINES(maxinode);
|
||||
MAKENINES(maxblock);
|
||||
MAKENINES(maxnlink);
|
||||
MAKENINES(maxsize);
|
||||
}
|
||||
bcfile = 0;
|
||||
flags = NULL;
|
||||
@ -787,7 +804,7 @@ label_out:
|
||||
d.s_inode = strlen(buf);
|
||||
(void)snprintf(buf, sizeof(buf), "%lu", maxnlink);
|
||||
d.s_nlink = strlen(buf);
|
||||
(void)snprintf(buf, sizeof(buf), "%qu", maxsize);
|
||||
(void)snprintf(buf, sizeof(buf), "%ju", maxsize);
|
||||
d.s_size = strlen(buf);
|
||||
d.s_user = maxuser;
|
||||
}
|
||||
@ -829,22 +846,3 @@ mastercmp(const FTSENT * const *a, const FTSENT * const *b)
|
||||
}
|
||||
return (sortfcn(*a, *b));
|
||||
}
|
||||
|
||||
/*
|
||||
* Makenines() returns (10**n)-1. This is useful for converting a width
|
||||
* into a number that wide in decimal.
|
||||
*/
|
||||
static u_quad_t
|
||||
makenines(u_long n)
|
||||
{
|
||||
u_long i;
|
||||
u_quad_t reg;
|
||||
|
||||
reg = 1;
|
||||
/* Use a loop instead of pow(), since all values of n are small. */
|
||||
for (i = 0; i < n; i++)
|
||||
reg *= 10;
|
||||
reg--;
|
||||
|
||||
return reg;
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ __FBSDID("$FreeBSD$");
|
||||
#include "ls.h"
|
||||
#include "extern.h"
|
||||
|
||||
static int printaname(FTSENT *, u_long, u_long);
|
||||
static int printaname(const FTSENT *, u_long, u_long);
|
||||
static void printlink(const FTSENT *);
|
||||
static void printtime(time_t);
|
||||
static int printtype(u_int);
|
||||
@ -74,7 +74,7 @@ static void printsize(size_t, off_t);
|
||||
static void endcolor(int);
|
||||
static int colortype(mode_t);
|
||||
#endif
|
||||
static void aclmode(char *, FTSENT *, int *);
|
||||
static void aclmode(char *, const FTSENT *, int *);
|
||||
|
||||
#define IS_NOPRINT(p) ((p)->fts_number == NO_PRINT)
|
||||
|
||||
@ -128,7 +128,7 @@ static struct {
|
||||
#endif
|
||||
|
||||
void
|
||||
printscol(DISPLAY *dp)
|
||||
printscol(const DISPLAY *dp)
|
||||
{
|
||||
FTSENT *p;
|
||||
|
||||
@ -155,7 +155,7 @@ printname(const char *name)
|
||||
}
|
||||
|
||||
void
|
||||
printlong(DISPLAY *dp)
|
||||
printlong(const DISPLAY *dp)
|
||||
{
|
||||
struct stat *sp;
|
||||
FTSENT *p;
|
||||
@ -179,7 +179,7 @@ printlong(DISPLAY *dp)
|
||||
if (f_inode)
|
||||
(void)printf("%*lu ", dp->s_inode, (u_long)sp->st_ino);
|
||||
if (f_size)
|
||||
(void)printf("%*lld ",
|
||||
(void)printf("%*jd ",
|
||||
dp->s_block, howmany(sp->st_blocks, blocksize));
|
||||
strmode(sp->st_mode, buf);
|
||||
/*
|
||||
@ -207,7 +207,7 @@ printlong(DISPLAY *dp)
|
||||
(void)printf("%3d, %3d ",
|
||||
major(sp->st_rdev), minor(sp->st_rdev));
|
||||
else if (dp->bcfile)
|
||||
(void)printf("%*s%*lld ",
|
||||
(void)printf("%*s%*jd ",
|
||||
8 - dp->s_size, "", dp->s_size, sp->st_size);
|
||||
else
|
||||
printsize(dp->s_size, sp->st_size);
|
||||
@ -235,10 +235,9 @@ printlong(DISPLAY *dp)
|
||||
}
|
||||
|
||||
void
|
||||
printstream(DISPLAY *dp)
|
||||
printstream(const DISPLAY *dp)
|
||||
{
|
||||
FTSENT *p;
|
||||
extern int termwidth;
|
||||
int chcnt;
|
||||
|
||||
for (p = dp->list, chcnt = 0; p; p = p->fts_link) {
|
||||
@ -260,9 +259,8 @@ printstream(DISPLAY *dp)
|
||||
}
|
||||
|
||||
void
|
||||
printcol(DISPLAY *dp)
|
||||
printcol(const DISPLAY *dp)
|
||||
{
|
||||
extern int termwidth;
|
||||
static FTSENT **array;
|
||||
static int lastentries = -1;
|
||||
FTSENT *p;
|
||||
@ -352,7 +350,7 @@ printcol(DISPLAY *dp)
|
||||
* return # of characters printed, no trailing characters.
|
||||
*/
|
||||
static int
|
||||
printaname(FTSENT *p, u_long inodefield, u_long sizefield)
|
||||
printaname(const FTSENT *p, u_long inodefield, u_long sizefield)
|
||||
{
|
||||
struct stat *sp;
|
||||
int chcnt;
|
||||
@ -365,7 +363,7 @@ printaname(FTSENT *p, u_long inodefield, u_long sizefield)
|
||||
if (f_inode)
|
||||
chcnt += printf("%*lu ", (int)inodefield, (u_long)sp->st_ino);
|
||||
if (f_size)
|
||||
chcnt += printf("%*lld ",
|
||||
chcnt += printf("%*jd ",
|
||||
(int)sizefield, howmany(sp->st_blocks, blocksize));
|
||||
#ifdef COLORLS
|
||||
if (f_color)
|
||||
@ -385,7 +383,7 @@ static void
|
||||
printtime(time_t ftime)
|
||||
{
|
||||
char longstring[80];
|
||||
static time_t now;
|
||||
static time_t now = 0;
|
||||
const char *format;
|
||||
static int d_first = -1;
|
||||
|
||||
@ -457,7 +455,7 @@ putch(int c)
|
||||
static int
|
||||
writech(int c)
|
||||
{
|
||||
char tmp = c;
|
||||
char tmp = (char)c;
|
||||
|
||||
(void)write(STDOUT_FILENO, &tmp, 1);
|
||||
return 0;
|
||||
@ -518,6 +516,7 @@ colortype(mode_t mode)
|
||||
case S_IFCHR:
|
||||
printcolor(C_CHR);
|
||||
return (1);
|
||||
default:;
|
||||
}
|
||||
if (mode & (S_IXUSR | S_IXGRP | S_IXOTH)) {
|
||||
if (mode & S_ISUID)
|
||||
@ -543,10 +542,10 @@ parsecolors(const char *cs)
|
||||
if (cs == NULL)
|
||||
cs = ""; /* LSCOLORS not set */
|
||||
len = strlen(cs);
|
||||
for (i = 0; i < C_NUMCOLORS; i++) {
|
||||
for (i = 0; i < (int)C_NUMCOLORS; i++) {
|
||||
colors[i].bold = 0;
|
||||
|
||||
if (len <= 2 * i) {
|
||||
if (len <= 2 * (size_t)i) {
|
||||
c[0] = defcolors[2 * i];
|
||||
c[1] = defcolors[2 * i + 1];
|
||||
} else {
|
||||
@ -568,7 +567,7 @@ parsecolors(const char *cs)
|
||||
else if (c[j] >= 'A' && c[j] <= 'H') {
|
||||
colors[i].num[j] = c[j] - 'A';
|
||||
colors[i].bold = 1;
|
||||
} else if (tolower((unsigned char)c[j] == 'x'))
|
||||
} else if (tolower((unsigned char)c[j]) == 'x')
|
||||
colors[i].num[j] = -1;
|
||||
else {
|
||||
warnx("invalid character '%c' in LSCOLORS"
|
||||
@ -622,12 +621,12 @@ printsize(size_t width, off_t bytes)
|
||||
unit = unit_adjust(&dbytes);
|
||||
|
||||
if (dbytes == 0)
|
||||
(void)printf("%*s ", width, "0B");
|
||||
(void)printf("%*s ", (u_int)width, "0B");
|
||||
else
|
||||
(void)printf("%*.*f%c ", width - 1, dbytes > 10 ? 0 : 1,
|
||||
dbytes, "BKMGTPE"[unit]);
|
||||
(void)printf("%*.*f%c ", (u_int)width - 1,
|
||||
dbytes > 10 ? 0 : 1, dbytes, "BKMGTPE"[unit]);
|
||||
} else
|
||||
(void)printf("%*lld ", width, bytes);
|
||||
(void)printf("%*jd ", (u_int)width, bytes);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -658,7 +657,7 @@ unit_adjust(double *val)
|
||||
}
|
||||
|
||||
static void
|
||||
aclmode(char *buf, FTSENT *p, int *haveacls)
|
||||
aclmode(char *buf, const FTSENT *p, int *haveacls)
|
||||
{
|
||||
char name[MAXPATHLEN + 1];
|
||||
int entries, ret;
|
||||
|
@ -39,7 +39,7 @@
|
||||
static char sccsid[] = "@(#)util.c 8.3 (Berkeley) 4/2/94";
|
||||
#endif /* not lint */
|
||||
#endif
|
||||
#include <sys/types.h>
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
#include <sys/types.h>
|
||||
|
@ -69,8 +69,10 @@ __FBSDID("$FreeBSD$");
|
||||
#define EXT_MODE O_RDONLY /* open mode for list/extract */
|
||||
#define AR_MODE (O_WRONLY | O_CREAT | O_TRUNC) /* mode for archive */
|
||||
#define APP_MODE O_RDWR /* mode for append */
|
||||
#define STDO "<STDOUT>" /* pseudo name for stdout */
|
||||
#define STDN "<STDIN>" /* pseudo name for stdin */
|
||||
|
||||
static char none[] = "<NONE>"; /* pseudo name for no file */
|
||||
static char stdo[] = "<STDOUT>"; /* pseudo name for stdout */
|
||||
static char stdn[] = "<STDIN>"; /* pseudo name for stdin */
|
||||
static int arfd = -1; /* archive file descriptor */
|
||||
static int artyp = ISREG; /* archive type: file/FIFO/tape */
|
||||
static int arvol = 1; /* archive volume number */
|
||||
@ -82,7 +84,7 @@ static struct stat arsb; /* stat of archive device at open */
|
||||
static int invld_rec; /* tape has out of spec record size */
|
||||
static int wr_trail = 1; /* trailer was rewritten in append */
|
||||
static int can_unlnk = 0; /* do we unlink null archives? */
|
||||
char *arcname; /* printable name of archive */
|
||||
const char *arcname; /* printable name of archive */
|
||||
const char *gzip_program; /* name of gzip program */
|
||||
static pid_t zpid = -1; /* pid of child process */
|
||||
|
||||
@ -100,7 +102,7 @@ static void ar_start_gzip(int, const char *, int);
|
||||
*/
|
||||
|
||||
int
|
||||
ar_open(char *name)
|
||||
ar_open(const char *name)
|
||||
{
|
||||
struct mtget mb;
|
||||
|
||||
@ -119,7 +121,7 @@ ar_open(char *name)
|
||||
case EXTRACT:
|
||||
if (name == NULL) {
|
||||
arfd = STDIN_FILENO;
|
||||
arcname = STDN;
|
||||
arcname = stdn;
|
||||
} else if ((arfd = open(name, EXT_MODE, DMOD)) < 0)
|
||||
syswarn(0, errno, "Failed open to read on %s", name);
|
||||
if (arfd != -1 && gzip_program != NULL)
|
||||
@ -128,7 +130,7 @@ ar_open(char *name)
|
||||
case ARCHIVE:
|
||||
if (name == NULL) {
|
||||
arfd = STDOUT_FILENO;
|
||||
arcname = STDO;
|
||||
arcname = stdo;
|
||||
} else if ((arfd = open(name, AR_MODE, DMOD)) < 0)
|
||||
syswarn(0, errno, "Failed open to write on %s", name);
|
||||
else
|
||||
@ -139,7 +141,7 @@ ar_open(char *name)
|
||||
case APPND:
|
||||
if (name == NULL) {
|
||||
arfd = STDOUT_FILENO;
|
||||
arcname = STDO;
|
||||
arcname = stdo;
|
||||
} else if ((arfd = open(name, APP_MODE, DMOD)) < 0)
|
||||
syswarn(0, errno, "Failed open to read/write on %s",
|
||||
name);
|
||||
@ -148,7 +150,7 @@ ar_open(char *name)
|
||||
/*
|
||||
* arfd not used in COPY mode
|
||||
*/
|
||||
arcname = "<NONE>";
|
||||
arcname = none;
|
||||
lstrval = 1;
|
||||
return(0);
|
||||
}
|
||||
@ -1131,7 +1133,7 @@ ar_next(void)
|
||||
* if i/o is on stdin or stdout, we cannot reopen it (we do not know
|
||||
* the name), the user will be forced to type it in.
|
||||
*/
|
||||
if (strcmp(arcname, STDO) && strcmp(arcname, STDN) && (artyp != ISREG)
|
||||
if (strcmp(arcname, stdo) && strcmp(arcname, stdn) && (artyp != ISREG)
|
||||
&& (artyp != ISPIPE)) {
|
||||
if (artyp == ISTAPE) {
|
||||
tty_prnt("%s ready for archive tape volume: %d\n",
|
||||
@ -1227,7 +1229,7 @@ ar_next(void)
|
||||
*/
|
||||
if (ar_open(buf) >= 0) {
|
||||
if (freeit) {
|
||||
(void)free(arcname);
|
||||
(void)free((char *)(uintptr_t)arcname);
|
||||
freeit = 0;
|
||||
}
|
||||
if ((arcname = strdup(buf)) == NULL) {
|
||||
@ -1251,10 +1253,10 @@ ar_next(void)
|
||||
* to keep the fd the same in the calling function (parent).
|
||||
*/
|
||||
void
|
||||
ar_start_gzip(int fd, const char *gzip_program, int wr)
|
||||
ar_start_gzip(int fd, const char *gzip_prog, int wr)
|
||||
{
|
||||
int fds[2];
|
||||
char *gzip_flags;
|
||||
const char *gzip_flags;
|
||||
|
||||
if (pipe(fds) < 0)
|
||||
err(1, "could not pipe");
|
||||
@ -1282,7 +1284,7 @@ ar_start_gzip(int fd, const char *gzip_program, int wr)
|
||||
}
|
||||
close(fds[0]);
|
||||
close(fds[1]);
|
||||
if (execlp(gzip_program, gzip_program, gzip_flags,
|
||||
if (execlp(gzip_prog, gzip_prog, gzip_flags,
|
||||
(char *)NULL) < 0)
|
||||
err(1, "could not exec");
|
||||
/* NOTREACHED */
|
||||
|
@ -365,7 +365,7 @@ wr_archive(ARCHD *arcn, int is_app)
|
||||
int hlk;
|
||||
int wr_one;
|
||||
off_t cnt;
|
||||
int (*wrf)();
|
||||
int (*wrf)(ARCHD *);
|
||||
int fd = -1;
|
||||
time_t now;
|
||||
|
||||
@ -1053,7 +1053,7 @@ next_head(ARCHD *arcn)
|
||||
/*
|
||||
* this format has trailers outside of valid headers
|
||||
*/
|
||||
if ((ret = (*frmt->trail)(hdbuf,in_resync,&cnt)) == 0){
|
||||
if ((ret = (*frmt->trail_tar)(hdbuf,in_resync,&cnt)) == 0){
|
||||
/*
|
||||
* valid trailer found, drain input as required
|
||||
*/
|
||||
@ -1097,10 +1097,9 @@ next_head(ARCHD *arcn)
|
||||
|
||||
/*
|
||||
* ok got a valid header, check for trailer if format encodes it in the
|
||||
* the header. NOTE: the parameters are different than trailer routines
|
||||
* which encode trailers outside of the header!
|
||||
* the header.
|
||||
*/
|
||||
if (frmt->inhead && ((*frmt->trail)(arcn) == 0)) {
|
||||
if (frmt->inhead && ((*frmt->trail_cpio)(arcn) == 0)) {
|
||||
/*
|
||||
* valid trailer found, drain input as required
|
||||
*/
|
||||
|
@ -173,7 +173,7 @@ grptb_start(void)
|
||||
* Pointer to stored name (or an empty string).
|
||||
*/
|
||||
|
||||
char *
|
||||
const char *
|
||||
name_uid(uid_t uid, int frc)
|
||||
{
|
||||
struct passwd *pw;
|
||||
@ -244,7 +244,7 @@ name_uid(uid_t uid, int frc)
|
||||
* Pointer to stored name (or an empty string).
|
||||
*/
|
||||
|
||||
char *
|
||||
const char *
|
||||
name_gid(gid_t gid, int frc)
|
||||
{
|
||||
struct group *gr;
|
||||
|
@ -219,7 +219,7 @@ rd_ln_nm(ARCHD *arcn)
|
||||
* check the length specified for bogus values
|
||||
*/
|
||||
if ((arcn->sb.st_size == 0) ||
|
||||
(arcn->sb.st_size >= sizeof(arcn->ln_name))) {
|
||||
((size_t)arcn->sb.st_size >= sizeof(arcn->ln_name))) {
|
||||
# ifdef NET2_STAT
|
||||
paxwarn(1, "Cpio link name length is invalid: %lu",
|
||||
arcn->sb.st_size);
|
||||
|
@ -47,9 +47,9 @@
|
||||
/*
|
||||
* ar_io.c
|
||||
*/
|
||||
extern char *arcname;
|
||||
extern const char *arcname;
|
||||
extern const char *gzip_program;
|
||||
int ar_open(char *);
|
||||
int ar_open(const char *);
|
||||
void ar_close(void);
|
||||
void ar_drain(void);
|
||||
int ar_set_wr(void);
|
||||
@ -105,8 +105,8 @@ int uidtb_start(void);
|
||||
int gidtb_start(void);
|
||||
int usrtb_start(void);
|
||||
int grptb_start(void);
|
||||
char * name_uid(uid_t, int);
|
||||
char * name_gid(gid_t, int);
|
||||
const char * name_uid(uid_t, int);
|
||||
const char * name_gid(gid_t, int);
|
||||
int uid_name(char *, uid_t *);
|
||||
int gid_name(char *, gid_t *);
|
||||
|
||||
@ -167,7 +167,7 @@ int next_file(ARCHD *);
|
||||
*/
|
||||
void ls_list(ARCHD *, time_t, FILE *);
|
||||
void ls_tty(ARCHD *);
|
||||
int l_strncpy(char *, char *, int);
|
||||
int l_strncpy(char *, const char *, int);
|
||||
u_long asc_ul(char *, int, int);
|
||||
int ul_asc(u_long, char *, int, int);
|
||||
#ifndef NET2_STAT
|
||||
@ -178,7 +178,7 @@ int uqd_asc(u_quad_t, char *, int, int);
|
||||
/*
|
||||
* getoldopt.c
|
||||
*/
|
||||
int getoldopt(int, char **, char *);
|
||||
int getoldopt(int, char **, const char *);
|
||||
|
||||
/*
|
||||
* options.c
|
||||
@ -187,7 +187,7 @@ extern FSUB fsub[];
|
||||
extern int ford[];
|
||||
void options(int, char **);
|
||||
OPLIST * opt_next(void);
|
||||
int opt_add(char *);
|
||||
int opt_add(const char *);
|
||||
int bad_opt(void);
|
||||
char *chdname;
|
||||
|
||||
@ -233,7 +233,7 @@ extern int rmleadslash;
|
||||
extern int exit_val;
|
||||
extern int docrc;
|
||||
extern char *dirptr;
|
||||
extern char *argv0;
|
||||
extern const char *argv0;
|
||||
extern FILE *listf;
|
||||
extern char *tempfile;
|
||||
extern char *tempbase;
|
||||
|
@ -88,7 +88,7 @@ ls_list(ARCHD *arcn, time_t now, FILE *fp)
|
||||
struct stat *sbp;
|
||||
char f_mode[MODELEN];
|
||||
char f_date[DATELEN];
|
||||
char *timefrmt;
|
||||
const char *timefrmt;
|
||||
|
||||
/*
|
||||
* if not verbose, just print the file name
|
||||
@ -167,7 +167,7 @@ ls_tty(ARCHD *arcn)
|
||||
{
|
||||
char f_date[DATELEN];
|
||||
char f_mode[MODELEN];
|
||||
char *timefrmt;
|
||||
const char *timefrmt;
|
||||
|
||||
if (d_first < 0)
|
||||
d_first = (*nl_langinfo(D_MD_ORDER) == 'd');
|
||||
@ -198,7 +198,7 @@ ls_tty(ARCHD *arcn)
|
||||
*/
|
||||
|
||||
int
|
||||
l_strncpy(char *dest, char *src, int len)
|
||||
l_strncpy(char *dest, const char *src, int len)
|
||||
{
|
||||
char *stop;
|
||||
char *start;
|
||||
|
@ -13,12 +13,17 @@
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "pax.h"
|
||||
#include "extern.h"
|
||||
|
||||
int
|
||||
getoldopt(int argc, char **argv, char *optstring)
|
||||
getoldopt(int argc, char **argv, const char *optstring)
|
||||
{
|
||||
static char *key; /* Points to next keyletter */
|
||||
static char use_getopt; /* !=0 if argv[1][0] was '-' */
|
||||
|
@ -103,31 +103,31 @@ FSUB fsub[] = {
|
||||
/* 0: OLD BINARY CPIO */
|
||||
{"bcpio", 5120, sizeof(HD_BCPIO), 1, 0, 0, 1, bcpio_id, cpio_strd,
|
||||
bcpio_rd, bcpio_endrd, cpio_stwr, bcpio_wr, cpio_endwr, cpio_trail,
|
||||
rd_wrfile, wr_rdfile, bad_opt},
|
||||
NULL, rd_wrfile, wr_rdfile, bad_opt},
|
||||
|
||||
/* 1: OLD OCTAL CHARACTER CPIO */
|
||||
{"cpio", 5120, sizeof(HD_CPIO), 1, 0, 0, 1, cpio_id, cpio_strd,
|
||||
cpio_rd, cpio_endrd, cpio_stwr, cpio_wr, cpio_endwr, cpio_trail,
|
||||
rd_wrfile, wr_rdfile, bad_opt},
|
||||
NULL, rd_wrfile, wr_rdfile, bad_opt},
|
||||
|
||||
/* 2: SVR4 HEX CPIO */
|
||||
{"sv4cpio", 5120, sizeof(HD_VCPIO), 1, 0, 0, 1, vcpio_id, cpio_strd,
|
||||
vcpio_rd, vcpio_endrd, cpio_stwr, vcpio_wr, cpio_endwr, cpio_trail,
|
||||
rd_wrfile, wr_rdfile, bad_opt},
|
||||
NULL, rd_wrfile, wr_rdfile, bad_opt},
|
||||
|
||||
/* 3: SVR4 HEX CPIO WITH CRC */
|
||||
{"sv4crc", 5120, sizeof(HD_VCPIO), 1, 0, 0, 1, crc_id, crc_strd,
|
||||
vcpio_rd, vcpio_endrd, crc_stwr, vcpio_wr, cpio_endwr, cpio_trail,
|
||||
rd_wrfile, wr_rdfile, bad_opt},
|
||||
NULL, rd_wrfile, wr_rdfile, bad_opt},
|
||||
|
||||
/* 4: OLD TAR */
|
||||
{"tar", 10240, BLKMULT, 0, 1, BLKMULT, 0, tar_id, no_op,
|
||||
tar_rd, tar_endrd, no_op, tar_wr, tar_endwr, tar_trail,
|
||||
tar_rd, tar_endrd, no_op, tar_wr, tar_endwr, NULL, tar_trail,
|
||||
rd_wrfile, wr_rdfile, tar_opt},
|
||||
|
||||
/* 5: POSIX USTAR */
|
||||
{"ustar", 10240, BLKMULT, 0, 1, BLKMULT, 0, ustar_id, ustar_strd,
|
||||
ustar_rd, tar_endrd, ustar_stwr, ustar_wr, tar_endwr, tar_trail,
|
||||
ustar_rd, tar_endrd, ustar_stwr, ustar_wr, tar_endwr, NULL, tar_trail,
|
||||
rd_wrfile, wr_rdfile, bad_opt},
|
||||
};
|
||||
#define F_OCPIO 0 /* format when called as cpio -6 */
|
||||
@ -975,9 +975,8 @@ tar_options(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
mkpath(path)
|
||||
char *path;
|
||||
static int
|
||||
mkpath(char *path)
|
||||
{
|
||||
struct stat sb;
|
||||
char *slash;
|
||||
@ -1299,7 +1298,7 @@ printflg(unsigned int flg)
|
||||
static int
|
||||
c_frmt(const void *a, const void *b)
|
||||
{
|
||||
return(strcmp(((FSUB *)a)->name, ((FSUB *)b)->name));
|
||||
return(strcmp(((const FSUB *)a)->name, ((const FSUB *)b)->name));
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1353,22 +1352,23 @@ bad_opt(void)
|
||||
*/
|
||||
|
||||
int
|
||||
opt_add(char *str)
|
||||
opt_add(const char *str)
|
||||
{
|
||||
OPLIST *opt;
|
||||
char *frpt;
|
||||
char *pt;
|
||||
char *endpt;
|
||||
char *lstr;
|
||||
|
||||
if ((str == NULL) || (*str == '\0')) {
|
||||
paxwarn(0, "Invalid option name");
|
||||
return(-1);
|
||||
}
|
||||
if ((str = strdup(str)) == NULL) {
|
||||
if ((lstr = strdup(str)) == NULL) {
|
||||
paxwarn(0, "Unable to allocate space for option list");
|
||||
return(-1);
|
||||
}
|
||||
frpt = endpt = str;
|
||||
frpt = endpt = lstr;
|
||||
|
||||
/*
|
||||
* break into name and values pieces and stuff each one into a
|
||||
@ -1380,12 +1380,12 @@ opt_add(char *str)
|
||||
*endpt = '\0';
|
||||
if ((pt = strchr(frpt, '=')) == NULL) {
|
||||
paxwarn(0, "Invalid options format");
|
||||
free(str);
|
||||
free(lstr);
|
||||
return(-1);
|
||||
}
|
||||
if ((opt = (OPLIST *)malloc(sizeof(OPLIST))) == NULL) {
|
||||
paxwarn(0, "Unable to allocate space for option list");
|
||||
free(str);
|
||||
free(lstr);
|
||||
return(-1);
|
||||
}
|
||||
*pt++ = '\0';
|
||||
|
@ -222,7 +222,7 @@ rep_add(char *str)
|
||||
*/
|
||||
|
||||
int
|
||||
pat_add(char *str, char *chdname)
|
||||
pat_add(char *str, char *chdnam)
|
||||
{
|
||||
PATTERN *pt;
|
||||
|
||||
@ -249,7 +249,7 @@ pat_add(char *str, char *chdname)
|
||||
pt->plen = strlen(str);
|
||||
pt->fow = NULL;
|
||||
pt->flgs = 0;
|
||||
pt->chdname = chdname;
|
||||
pt->chdname = chdnam;
|
||||
|
||||
if (pathead == NULL) {
|
||||
pattail = pathead = pt;
|
||||
|
@ -102,7 +102,7 @@ int rmleadslash = 0; /* remove leading '/' from pathnames */
|
||||
int exit_val; /* exit value */
|
||||
int docrc; /* check/create file crc */
|
||||
char *dirptr; /* destination dir in a copy */
|
||||
char *argv0; /* root of argv[0] */
|
||||
const char *argv0; /* root of argv[0] */
|
||||
sigset_t s_mask; /* signal mask for cleanup critical sect */
|
||||
FILE *listf; /* file pointer to print file list to */
|
||||
char *tempfile; /* tempfile to use for mkstemp(3) */
|
||||
@ -231,7 +231,7 @@ char *tempbase; /* basename of tempfile to use for mkstemp(3) */
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
char *tmpdir;
|
||||
const char *tmpdir;
|
||||
size_t tdlen;
|
||||
|
||||
(void) setlocale(LC_ALL, "");
|
||||
|
@ -72,6 +72,11 @@
|
||||
#define ISTAPE 3 /* tape drive */
|
||||
#define ISPIPE 4 /* pipe/socket */
|
||||
|
||||
typedef struct archd ARCHD;
|
||||
typedef struct fsub FSUB;
|
||||
typedef struct oplist OPLIST;
|
||||
typedef struct pattern PATTERN;
|
||||
|
||||
/*
|
||||
* Format Specific Routine Table
|
||||
*
|
||||
@ -82,8 +87,8 @@
|
||||
* independent of the archive format. Data flow in and out of the format
|
||||
* dependent routines pass pointers to ARCHD structure (described below).
|
||||
*/
|
||||
typedef struct {
|
||||
char *name; /* name of format, this is the name the user */
|
||||
struct fsub {
|
||||
const char *name; /* name of format, this is the name the user */
|
||||
/* gives to -x option to select it. */
|
||||
int bsz; /* default block size. used when the user */
|
||||
/* does not specify a blocksize for writing */
|
||||
@ -108,12 +113,13 @@ typedef struct {
|
||||
int inhead; /* is the trailer encoded in a valid header? */
|
||||
/* if not, trailers are assumed to be found */
|
||||
/* in invalid headers (i.e like tar) */
|
||||
int (*id)(); /* checks if a buffer is a valid header */
|
||||
int (*id)(char *, int); /* checks if a buffer is a valid header */
|
||||
/* returns 1 if it is, o.w. returns a 0 */
|
||||
int (*st_rd)(); /* initialize routine for read. so format */
|
||||
int (*st_rd)(void); /* initialize routine for read. so format */
|
||||
/* can set up tables etc before it starts */
|
||||
/* reading an archive */
|
||||
int (*rd)(); /* read header routine. passed a pointer to */
|
||||
int (*rd)(ARCHD *, char *);
|
||||
/* read header routine. passed a pointer to */
|
||||
/* ARCHD. It must extract the info from the */
|
||||
/* format and store it in the ARCHD struct. */
|
||||
/* This routine is expected to fill all the */
|
||||
@ -125,12 +131,12 @@ typedef struct {
|
||||
/* padding and the number of bytes of data */
|
||||
/* which follow the header. This info is */
|
||||
/* used skip to the next file header */
|
||||
off_t (*end_rd)(); /* read cleanup. Allows format to clean up */
|
||||
off_t (*end_rd)(void); /* read cleanup. Allows format to clean up */
|
||||
/* and MUST RETURN THE LENGTH OF THE TRAILER */
|
||||
/* RECORD (so append knows how many bytes */
|
||||
/* to move back to rewrite the trailer) */
|
||||
int (*st_wr)(); /* initialize routine for write operations */
|
||||
int (*wr)(); /* write archive header. Passed an ARCHD */
|
||||
int (*st_wr)(void); /* initialize routine for write operations */
|
||||
int (*wr)(ARCHD *); /* write archive header. Passed an ARCHD */
|
||||
/* filled with the specs on the next file to */
|
||||
/* archived. Returns a 1 if no file data is */
|
||||
/* is to be stored; 0 if file data is to be */
|
||||
@ -140,29 +146,30 @@ typedef struct {
|
||||
/* the proper padding can be added after */
|
||||
/* file data. This routine must NEVER write */
|
||||
/* a flawed archive header. */
|
||||
int (*end_wr)(); /* end write. write the trailer and do any */
|
||||
int (*end_wr)(void); /* end write. write the trailer and do any */
|
||||
/* other format specific functions needed */
|
||||
/* at the end of an archive write */
|
||||
int (*trail)(); /* returns 0 if a valid trailer, -1 if not */
|
||||
int (*trail_cpio)(ARCHD *);
|
||||
int (*trail_tar)(char *, int, int *);
|
||||
/* returns 0 if a valid trailer, -1 if not */
|
||||
/* For formats which encode the trailer */
|
||||
/* outside of a valid header, a return value */
|
||||
/* of 1 indicates that the block passed to */
|
||||
/* it can never contain a valid header (skip */
|
||||
/* this block, no point in looking at it) */
|
||||
/* CAUTION: parameters to this function are */
|
||||
/* different for trailers inside or outside */
|
||||
/* of headers. See get_head() for details */
|
||||
int (*rd_data)(); /* read/process file data from the archive */
|
||||
int (*wr_data)(); /* write/process file data to the archive */
|
||||
int (*options)(); /* process format specific options (-o) */
|
||||
} FSUB;
|
||||
int (*rd_data)(ARCHD *, int, off_t *);
|
||||
/* read/process file data from the archive */
|
||||
int (*wr_data)(ARCHD *, int, off_t *);
|
||||
/* write/process file data to the archive */
|
||||
int (*options)(void); /* process format specific options (-o) */
|
||||
};
|
||||
|
||||
/*
|
||||
* Pattern matching structure
|
||||
*
|
||||
* Used to store command line patterns
|
||||
*/
|
||||
typedef struct pattern {
|
||||
struct pattern {
|
||||
char *pstr; /* pattern to match, user supplied */
|
||||
char *pend; /* end of a prefix match */
|
||||
char *chdname; /* the dir to change to if not NULL. */
|
||||
@ -171,7 +178,7 @@ typedef struct pattern {
|
||||
#define MTCH 0x1 /* pattern has been matched */
|
||||
#define DIR_MTCH 0x2 /* pattern matched a directory */
|
||||
struct pattern *fow; /* next pattern */
|
||||
} PATTERN;
|
||||
};
|
||||
|
||||
/*
|
||||
* General Archive Structure (used internal to pax)
|
||||
@ -185,7 +192,7 @@ typedef struct pattern {
|
||||
* may be required if and when the supporting operating system removes all
|
||||
* restrictions on the length of pathnames it will resolve.
|
||||
*/
|
||||
typedef struct {
|
||||
struct archd {
|
||||
int nlen; /* file name length */
|
||||
char name[PAXPATHLEN+1]; /* file name */
|
||||
int ln_nlen; /* link name length */
|
||||
@ -210,18 +217,18 @@ typedef struct {
|
||||
#define PAX_HLK 8 /* hard link */
|
||||
#define PAX_HRG 9 /* hard link to a regular file */
|
||||
#define PAX_CTG 10 /* high performance file */
|
||||
} ARCHD;
|
||||
};
|
||||
|
||||
/*
|
||||
* Format Specific Options List
|
||||
*
|
||||
* Used to pass format options to the format options handler
|
||||
*/
|
||||
typedef struct oplist {
|
||||
struct oplist {
|
||||
char *name; /* option variable name e.g. name= */
|
||||
char *value; /* value for option variable */
|
||||
struct oplist *fow; /* next option */
|
||||
} OPLIST;
|
||||
};
|
||||
|
||||
/*
|
||||
* General Macros
|
||||
|
@ -70,7 +70,7 @@ shquote(char **argv)
|
||||
if (buf == NULL) {
|
||||
if ((arg_max = sysconf(_SC_ARG_MAX)) == -1)
|
||||
errx(1, "sysconf _SC_ARG_MAX failed");
|
||||
if (arg_max >= LONG_MAX / 4 || 4 * arg_max + 1 > SIZE_MAX)
|
||||
if (arg_max >= LONG_MAX / 4 || 4 * arg_max + 1 > (long)SIZE_MAX)
|
||||
errx(1, "sysconf _SC_ARG_MAX preposterously large");
|
||||
buf_size = 4 * arg_max + 1;
|
||||
if ((buf = malloc(buf_size)) == NULL)
|
||||
|
@ -90,14 +90,15 @@ int pflag, iamremote, iamrecursive, targetshouldbedirectory;
|
||||
int family = PF_UNSPEC;
|
||||
|
||||
static int argc_copy;
|
||||
static char **argv_copy;
|
||||
static const char **argv_copy;
|
||||
|
||||
static char period[] = ".";
|
||||
|
||||
#define CMDNEEDS 64
|
||||
char cmd[CMDNEEDS]; /* must hold "rcp -r -p -d\0" */
|
||||
|
||||
int response(void);
|
||||
void rsource(char *, struct stat *);
|
||||
void run_err(const char *, ...) __printflike(1, 2);
|
||||
void sink(int, char *[]);
|
||||
void source(int, char *[]);
|
||||
void tolocal(int, char *[]);
|
||||
@ -109,7 +110,7 @@ main(int argc, char *argv[])
|
||||
{
|
||||
struct servent *sp;
|
||||
int ch, fflag, i, tflag;
|
||||
char *targ, *shell;
|
||||
char *targ;
|
||||
|
||||
/*
|
||||
* Prepare for execing ourselves.
|
||||
@ -163,9 +164,9 @@ main(int argc, char *argv[])
|
||||
argc -= optind;
|
||||
argv += optind;
|
||||
|
||||
sp = getservbyname(shell = "shell", "tcp");
|
||||
sp = getservbyname("shell", "tcp");
|
||||
if (sp == NULL)
|
||||
errx(1, "%s/tcp: unknown service", shell);
|
||||
errx(1, "shell/tcp: unknown service");
|
||||
port = sp->s_port;
|
||||
|
||||
if ((pwd = getpwuid(userid = getuid())) == NULL)
|
||||
@ -217,7 +218,7 @@ toremote(char *targ, int argc, char *argv[])
|
||||
|
||||
*targ++ = 0;
|
||||
if (*targ == 0)
|
||||
targ = ".";
|
||||
targ = period;
|
||||
|
||||
if ((thost = strchr(argv[argc - 1], '@'))) {
|
||||
/* user@host */
|
||||
@ -237,7 +238,7 @@ toremote(char *targ, int argc, char *argv[])
|
||||
if (src) { /* remote to remote */
|
||||
*src++ = 0;
|
||||
if (*src == 0)
|
||||
src = ".";
|
||||
src = period;
|
||||
host = strchr(argv[i], '@');
|
||||
len = strlen(_PATH_RSH) + strlen(argv[i]) +
|
||||
strlen(src) + (tuser ? strlen(tuser) : 0) +
|
||||
@ -317,7 +318,7 @@ tolocal(int argc, char *argv[])
|
||||
}
|
||||
*src++ = 0;
|
||||
if (*src == 0)
|
||||
src = ".";
|
||||
src = period;
|
||||
if ((host = strchr(argv[i], '@')) == NULL) {
|
||||
host = argv[i];
|
||||
suser = pwd->pw_name;
|
||||
@ -505,7 +506,8 @@ sink(int argc, char *argv[])
|
||||
int amt, exists, first, mask, mode, ofd, omode;
|
||||
size_t count;
|
||||
int setimes, targisdir, wrerrno = 0;
|
||||
char ch, *cp, *np, *targ, *why, *vect[1], buf[BUFSIZ], path[PATH_MAX];
|
||||
char ch, *cp, *np, *targ, *vect[1], buf[BUFSIZ], path[PATH_MAX];
|
||||
const char *why;
|
||||
|
||||
#define atime tv[0]
|
||||
#define mtime tv[1]
|
||||
@ -673,7 +675,7 @@ bad: run_err("%s: %s", np, strerror(errno));
|
||||
/* Keep reading so we stay sync'd up. */
|
||||
if (wrerr == NO) {
|
||||
j = write(ofd, bp->buf, count);
|
||||
if (j != count) {
|
||||
if (j != (off_t)count) {
|
||||
wrerr = YES;
|
||||
wrerrno = j >= 0 ? EIO : errno;
|
||||
}
|
||||
@ -683,7 +685,7 @@ bad: run_err("%s: %s", np, strerror(errno));
|
||||
}
|
||||
}
|
||||
if (count != 0 && wrerr == NO &&
|
||||
(j = write(ofd, bp->buf, count)) != count) {
|
||||
(j = write(ofd, bp->buf, count)) != (off_t)count) {
|
||||
wrerr = YES;
|
||||
wrerrno = j >= 0 ? EIO : errno;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user