34 static int strntoul(
const char *str,
char **endptr,
int base,
int num)
42 strncpy(buf, str, num);
45 ret = strtoul(buf, &end, base);
49 *endptr = ((
char *)str) + (end -
buf);
51 *endptr = ((
char *)str) + strlen(buf);
83 nb = (len > fsm->
rdnb ? fsm->
rdnb : len);
84 memcpy(t, fsm->
wrbuf, nb);
106 fprintf(stderr,
" %s(%p, %p)\n", __FUNCTION__, fsm, st);
125 {
const unsigned char * hp = (
const unsigned char *) hdr;
131 memcpy(hdrchecksum, hdr->
checksum,
sizeof(hdrchecksum));
138 for (i = 0; i <
sizeof(hdr->
checksum) - 1; i++)
140 fprintf(stderr,
"\tsum %ld\n", sum);
144 memset(checksum,
' ',
sizeof(checksum));
145 sprintf(checksum,
"%06o", (
unsigned) (sum & 07777777));
147 fprintf(stderr,
"\tmemcmp(\"%s\", \"%s\", %u)\n", hdrchecksum, checksum, (
unsigned)
sizeof(hdrchecksum));
148 if (memcmp(hdrchecksum, checksum,
sizeof(hdrchecksum)))
163 st->st_mode &= ~S_IFMT;
172 st->st_mode |= S_IFREG;
175 st->st_mode |= S_IFREG;
181 st->st_mode |= S_IFLNK;
184 st->st_mode |= S_IFCHR;
187 st->st_mode |= S_IFBLK;
190 st->st_mode |= S_IFDIR;
194 st->st_mode |= S_IFIFO;
222 st->st_ctime = st->st_atime = st->st_mtime;
229 st->st_rdev = st->st_dev;
235 if (fsm->
path == NULL && hdr->
name[0] !=
'\0') {
236 nb = strlen(hdr->
name);
239 memcpy(t, hdr->
name, nb);
257 fprintf(stderr,
"\t %06o%3d (%4d,%4d)%10d %s\n\t-> %s\n",
258 (
unsigned)st->st_mode, (
int)st->st_nlink,
259 (
int)st->st_uid, (
int)st->st_gid, (
int)st->st_size,
275 const char * s = path;
280 fprintf(stderr,
"\t%s(%p, %s) nb %d\n", __FUNCTION__, fsm, path, nb);
317 fprintf(stderr,
"\t%s(%p, %p) type %c\n", __FUNCTION__, fsm, hdr, hdr->
typeflag);
319 fprintf(stderr,
"\t %06o%3d (%4d,%4d)%10d %s\n",
320 (
unsigned)st->st_mode, (
int)st->st_nlink,
321 (
int)st->st_uid, (
int)st->st_gid, (
int)st->st_size,
328 {
const unsigned char * hp = (
const unsigned char *) hdr;
335 sprintf(hdr->
checksum,
"%06o", (
unsigned)(sum & 07777777));
337 fprintf(stderr,
"\thdrchksum \"%s\"\n", hdr->
checksum);
352 static const char * llname =
"././@LongLink";
360 fprintf(stderr,
" %s(%p, %p)\n", __FUNCTION__, fsm, st);
362 len = strlen(fsm->
path);
363 if (len >
sizeof(hdr->
name)) {
364 memset(hdr, 0,
sizeof(*hdr));
365 strcpy(hdr->
name, llname);
366 sprintf(hdr->
mode,
"%07o", 0);
367 sprintf(hdr->
uid,
"%07o", 0);
368 sprintf(hdr->
gid,
"%07o", 0);
369 sprintf(hdr->
filesize,
"%011o", (
unsigned) (len & 037777777777));
370 sprintf(hdr->
mtime,
"%011o", 0);
372 strncpy(hdr->
uname,
"root",
sizeof(hdr->
uname));
373 strncpy(hdr->
gname,
"root",
sizeof(hdr->
gname));
381 len = strlen(fsm->
lpath);
382 if (len >
sizeof(hdr->
name)) {
383 memset(hdr, 0,
sizeof(*hdr));
385 sprintf(hdr->
mode,
"%07o", 0);
386 sprintf(hdr->
uid,
"%07o", 0);
387 sprintf(hdr->
gid,
"%07o", 0);
388 sprintf(hdr->
filesize,
"%011o", (
unsigned) (len & 037777777777));
389 sprintf(hdr->
mtime,
"%011o", 0);
391 strncpy(hdr->
uname,
"root",
sizeof(hdr->
uname));
392 strncpy(hdr->
gname,
"root",
sizeof(hdr->
gname));
400 memset(hdr, 0,
sizeof(*hdr));
407 sprintf(hdr->
mode,
"%07o", (st->st_mode & 00007777));
408 sprintf(hdr->
uid,
"%07o", (st->st_uid & 07777777));
409 sprintf(hdr->
gid,
"%07o", (st->st_gid & 07777777));
411 sprintf(hdr->
filesize,
"%011o", (
unsigned) (st->st_size & 037777777777));
412 sprintf(hdr->
mtime,
"%011o", (
unsigned) (st->st_mtime & 037777777777));
417 else if (S_ISCHR(st->st_mode))
419 else if (S_ISBLK(st->st_mode))
421 else if (S_ISDIR(st->st_mode))
423 else if (S_ISFIFO(st->st_mode))
429 else if (S_ISREG(st->st_mode))
434 if (t == NULL) t =
"root";
437 if (t == NULL) t =
"root";
441 dev =
major((
unsigned)st->st_dev);
442 sprintf(hdr->
devMajor,
"%07o", (
unsigned) (dev & 07777777));
443 dev =
minor((
unsigned)st->st_dev);
444 sprintf(hdr->
devMinor,
"%07o", (
unsigned) (dev & 07777777));
460 fprintf(stderr,
" %s(%p)\n", __FUNCTION__, fsm);