Lines Matching +full:line +full:- +full:name
1 // SPDX-License-Identifier: GPL-2.0
34 int (*handler)(const char *line);
37 static void push_string(const char *name) in push_string() argument
39 unsigned int name_len = strlen(name) + 1; in push_string()
41 fputs(name, stdout); in push_string()
54 static void push_rest(const char *name) in push_rest() argument
56 unsigned int name_len = strlen(name) + 1; in push_rest()
59 fputs(name, stdout); in push_rest()
80 const char name[] = "TRAILER!!!"; in cpio_trailer() local
96 (unsigned)strlen(name)+1, /* namesize */ in cpio_trailer()
99 push_rest(name); in cpio_trailer()
107 static int cpio_mkslink(const char *name, const char *target, in cpio_mkslink() argument
112 if (name[0] == '/') in cpio_mkslink()
113 name++; in cpio_mkslink()
128 (unsigned)strlen(name) + 1,/* namesize */ in cpio_mkslink()
131 push_string(name); in cpio_mkslink()
138 static int cpio_mkslink_line(const char *line) in cpio_mkslink_line() argument
140 char name[PATH_MAX + 1]; in cpio_mkslink_line() local
145 int rc = -1; in cpio_mkslink_line()
147 …if (5 != sscanf(line, "%" str(PATH_MAX) "s %" str(PATH_MAX) "s %o %d %d", name, target, &mode, &ui… in cpio_mkslink_line()
148 fprintf(stderr, "Unrecognized dir format '%s'", line); in cpio_mkslink_line()
151 rc = cpio_mkslink(name, target, mode, uid, gid); in cpio_mkslink_line()
156 static int cpio_mkgeneric(const char *name, unsigned int mode, in cpio_mkgeneric() argument
161 if (name[0] == '/') in cpio_mkgeneric()
162 name++; in cpio_mkgeneric()
177 (unsigned)strlen(name) + 1,/* namesize */ in cpio_mkgeneric()
180 push_rest(name); in cpio_mkgeneric()
210 static int cpio_mkgeneric_line(const char *line, enum generic_types gt) in cpio_mkgeneric_line() argument
212 char name[PATH_MAX + 1]; in cpio_mkgeneric_line() local
216 int rc = -1; in cpio_mkgeneric_line()
218 if (4 != sscanf(line, "%" str(PATH_MAX) "s %o %d %d", name, &mode, &uid, &gid)) { in cpio_mkgeneric_line()
220 line, generic_type_table[gt].type); in cpio_mkgeneric_line()
224 rc = cpio_mkgeneric(name, mode, uid, gid); in cpio_mkgeneric_line()
229 static int cpio_mkdir_line(const char *line) in cpio_mkdir_line() argument
231 return cpio_mkgeneric_line(line, GT_DIR); in cpio_mkdir_line()
234 static int cpio_mkpipe_line(const char *line) in cpio_mkpipe_line() argument
236 return cpio_mkgeneric_line(line, GT_PIPE); in cpio_mkpipe_line()
239 static int cpio_mksock_line(const char *line) in cpio_mksock_line() argument
241 return cpio_mkgeneric_line(line, GT_SOCK); in cpio_mksock_line()
244 static int cpio_mknod(const char *name, unsigned int mode, in cpio_mknod() argument
255 if (name[0] == '/') in cpio_mknod()
256 name++; in cpio_mknod()
271 (unsigned)strlen(name) + 1,/* namesize */ in cpio_mknod()
274 push_rest(name); in cpio_mknod()
278 static int cpio_mknod_line(const char *line) in cpio_mknod_line() argument
280 char name[PATH_MAX + 1]; in cpio_mknod_line() local
287 int rc = -1; in cpio_mknod_line()
289 if (7 != sscanf(line, "%" str(PATH_MAX) "s %o %d %d %c %u %u", in cpio_mknod_line()
290 name, &mode, &uid, &gid, &dev_type, &maj, &min)) { in cpio_mknod_line()
291 fprintf(stderr, "Unrecognized nod format '%s'", line); in cpio_mknod_line()
294 rc = cpio_mknod(name, mode, uid, gid, dev_type, maj, min); in cpio_mknod_line()
308 return -1; in cpio_mkfile_csum()
313 size -= this_read; in cpio_mkfile_csum()
317 return -1; in cpio_mkfile_csum()
322 static int cpio_mkfile(const char *name, const char *location, in cpio_mkfile() argument
331 int rc = -1; in cpio_mkfile()
379 if (name[0] == '/') in cpio_mkfile()
380 name++; in cpio_mkfile()
381 namesize = strlen(name) + 1; in cpio_mkfile()
399 push_string(name); in cpio_mkfile()
418 size -= this_read; in cpio_mkfile()
422 name += namesize; in cpio_mkfile()
450 static int cpio_mkfile_line(const char *line) in cpio_mkfile_line() argument
452 char name[PATH_MAX + 1]; in cpio_mkfile_line() local
460 int rc = -1; in cpio_mkfile_line()
462 if (5 > sscanf(line, "%" str(PATH_MAX) "s %" str(PATH_MAX) in cpio_mkfile_line()
464 name, location, &mode, &uid, &gid, &end)) { in cpio_mkfile_line()
465 fprintf(stderr, "Unrecognized file format '%s'", line); in cpio_mkfile_line()
468 if (end && isgraph(line[end])) { in cpio_mkfile_line()
472 dname = malloc(strlen(line)); in cpio_mkfile_line()
478 dname_len = strlen(name) + 1; in cpio_mkfile_line()
479 memcpy(dname, name, dname_len); in cpio_mkfile_line()
483 if (sscanf(line + end, "%" str(PATH_MAX) "s %n", in cpio_mkfile_line()
484 name, &nend) < 1) in cpio_mkfile_line()
486 len = strlen(name) + 1; in cpio_mkfile_line()
487 memcpy(dname + dname_len, name, len); in cpio_mkfile_line()
491 } while (isgraph(line[end])); in cpio_mkfile_line()
493 dname = name; in cpio_mkfile_line()
505 "\t%s [-t <timestamp>] [-c] <cpio_list>\n" in usage()
511 "file <name> <location> <mode> <uid> <gid> [<hard links>]\n" in usage()
512 "dir <name> <mode> <uid> <gid>\n" in usage()
513 "nod <name> <mode> <uid> <gid> <dev_type> <maj> <min>\n" in usage()
514 "slink <name> <target> <mode> <uid> <gid>\n" in usage()
515 "pipe <name> <mode> <uid> <gid>\n" in usage()
516 "sock <name> <mode> <uid> <gid>\n" in usage()
518 "<name> name of the file/dir/nod/etc in the archive\n" in usage()
541 "-c: calculate and store 32-bit checksums for file data.\n", in usage()
575 char line[LINE_SIZE]; in main() local
586 if (opt == -1) in main()
609 * Timestamps after 2106-02-07 06:28:15 UTC have an ascii hex time_t in main()
618 if (argc - optind != 1) { in main()
623 if (!strcmp(filename, "-")) in main()
632 while (fgets(line, LINE_SIZE, cpio_list)) { in main()
634 size_t slen = strlen(line); in main()
638 if ('#' == *line) { in main()
639 /* comment - skip to next line */ in main()
643 if (! (type = strtok(line, " \t"))) { in main()
645 "ERROR: incorrect format, could not locate file type line %d: '%s'\n", in main()
646 line_nr, line); in main()
647 ec = -1; in main()
652 /* a blank line */ in main()
657 /* must be an empty line */ in main()
663 "ERROR: incorrect format, newline required line %d: '%s'\n", in main()
664 line_nr, line); in main()
665 ec = -1; in main()
670 if (! strcmp(line, file_handler_table[type_idx].type)) { in main()
673 fprintf(stderr, " line %d\n", line_nr); in main()
680 fprintf(stderr, "unknown file type line %d: '%s'\n", in main()
681 line_nr, line); in main()