mirror of
https://github.com/freebsd/freebsd-src
synced 2024-09-06 17:18:32 +00:00
Minor fixes to previous change introducing switch -H, as per comments
on -arch. Reviewed by: gleb
This commit is contained in:
parent
e2fc1af45e
commit
55298f0397
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=265893
|
@ -130,6 +130,7 @@ and use
|
|||
.Xr fhstat 2
|
||||
instead of
|
||||
.Xr lstat 2 .
|
||||
This requires root privileges.
|
||||
.It Fl L
|
||||
Use
|
||||
.Xr stat 2
|
||||
|
|
|
@ -186,6 +186,7 @@ int format1(const struct stat *, /* stat info */
|
|||
char *, size_t, /* a place to put the output */
|
||||
int, int, int, int, /* the parsed format */
|
||||
int, int);
|
||||
int hex2byte(const char [2]);
|
||||
#if HAVE_STRUCT_STAT_ST_FLAGS
|
||||
char *xfflagstostr(unsigned long);
|
||||
#endif
|
||||
|
@ -214,7 +215,7 @@ main(int argc, char *argv[])
|
|||
lsF = 0;
|
||||
fmtchar = '\0';
|
||||
usestat = 0;
|
||||
nfs_handle = 0;
|
||||
nfs_handle = 0;
|
||||
nonl = 0;
|
||||
quiet = 0;
|
||||
linkfail = 0;
|
||||
|
@ -327,32 +328,27 @@ main(int argc, char *argv[])
|
|||
rc = fstat(STDIN_FILENO, &st);
|
||||
} else {
|
||||
int j;
|
||||
char *inval;
|
||||
|
||||
file = argv[0];
|
||||
if (nfs_handle) {
|
||||
rc = 0;
|
||||
bzero (&fhnd, sizeof fhnd);
|
||||
j = MIN(2 * sizeof fhnd, strlen(file));
|
||||
if (j & 1) {
|
||||
bzero(&fhnd, sizeof(fhnd));
|
||||
j = MIN(2 * sizeof(fhnd), strlen(file));
|
||||
if ((j & 1) != 0) {
|
||||
rc = -1;
|
||||
} else {
|
||||
while (j) {
|
||||
((char*) &fhnd)[j / 2 - 1] =
|
||||
strtol(&file[j - 2],
|
||||
&inval, 16);
|
||||
if (inval != NULL) {
|
||||
rc = -1;
|
||||
rc = hex2byte(&file[j - 2]);
|
||||
if (rc == -1)
|
||||
break;
|
||||
}
|
||||
argv[0][j - 2] = '\0';
|
||||
((char*) &fhnd)[j / 2 - 1] = rc;
|
||||
j -= 2;
|
||||
}
|
||||
if (!rc)
|
||||
rc = fhstat(&fhnd, &st);
|
||||
else
|
||||
errno = EINVAL;
|
||||
}
|
||||
if (rc == -1)
|
||||
errno = EINVAL;
|
||||
else
|
||||
rc = fhstat(&fhnd, &st);
|
||||
|
||||
} else if (usestat) {
|
||||
/*
|
||||
|
@ -1091,3 +1087,12 @@ format1(const struct stat *st,
|
|||
|
||||
return (snprintf(buf, blen, lfmt, data));
|
||||
}
|
||||
|
||||
|
||||
#define hex2nibble(c) (c <= '9' ? c - '0' : toupper(c) - 'A' + 10)
|
||||
int
|
||||
hex2byte(const char c[2]) {
|
||||
if (!(ishexnumber(c[0]) && ishexnumber(c[1])))
|
||||
return -1;
|
||||
return (hex2nibble(c[0]) << 4) + hex2nibble(c[1]);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue