Lines Matching +full:line +full:- +full:name

1 // SPDX-License-Identifier: GPL-2.0
30 int (*handler)(const char *line);
33 static void push_string(const char *name) in push_string() argument
35 unsigned int name_len = strlen(name) + 1; in push_string()
37 fputs(name, stdout); in push_string()
50 static void push_rest(const char *name) in push_rest() argument
52 unsigned int name_len = strlen(name) + 1; in push_rest()
55 fputs(name, stdout); in push_rest()
76 const char name[] = "TRAILER!!!"; in cpio_trailer() local
92 (unsigned)strlen(name)+1, /* namesize */ in cpio_trailer()
95 push_rest(name); in cpio_trailer()
103 static int cpio_mkslink(const char *name, const char *target, in cpio_mkslink() argument
108 if (name[0] == '/') in cpio_mkslink()
109 name++; in cpio_mkslink()
124 (unsigned)strlen(name) + 1,/* namesize */ in cpio_mkslink()
127 push_string(name); in cpio_mkslink()
134 static int cpio_mkslink_line(const char *line) in cpio_mkslink_line() argument
136 char name[PATH_MAX + 1]; in cpio_mkslink_line() local
141 int rc = -1; in cpio_mkslink_line()
143 …if (5 != sscanf(line, "%" str(PATH_MAX) "s %" str(PATH_MAX) "s %o %d %d", name, target, &mode, &ui… in cpio_mkslink_line()
144 fprintf(stderr, "Unrecognized dir format '%s'", line); in cpio_mkslink_line()
147 rc = cpio_mkslink(name, target, mode, uid, gid); in cpio_mkslink_line()
152 static int cpio_mkgeneric(const char *name, unsigned int mode, in cpio_mkgeneric() argument
157 if (name[0] == '/') in cpio_mkgeneric()
158 name++; in cpio_mkgeneric()
173 (unsigned)strlen(name) + 1,/* namesize */ in cpio_mkgeneric()
176 push_rest(name); in cpio_mkgeneric()
206 static int cpio_mkgeneric_line(const char *line, enum generic_types gt) in cpio_mkgeneric_line() argument
208 char name[PATH_MAX + 1]; in cpio_mkgeneric_line() local
212 int rc = -1; in cpio_mkgeneric_line()
214 if (4 != sscanf(line, "%" str(PATH_MAX) "s %o %d %d", name, &mode, &uid, &gid)) { in cpio_mkgeneric_line()
216 line, generic_type_table[gt].type); in cpio_mkgeneric_line()
220 rc = cpio_mkgeneric(name, mode, uid, gid); in cpio_mkgeneric_line()
225 static int cpio_mkdir_line(const char *line) in cpio_mkdir_line() argument
227 return cpio_mkgeneric_line(line, GT_DIR); in cpio_mkdir_line()
230 static int cpio_mkpipe_line(const char *line) in cpio_mkpipe_line() argument
232 return cpio_mkgeneric_line(line, GT_PIPE); in cpio_mkpipe_line()
235 static int cpio_mksock_line(const char *line) in cpio_mksock_line() argument
237 return cpio_mkgeneric_line(line, GT_SOCK); in cpio_mksock_line()
240 static int cpio_mknod(const char *name, unsigned int mode, in cpio_mknod() argument
251 if (name[0] == '/') in cpio_mknod()
252 name++; in cpio_mknod()
267 (unsigned)strlen(name) + 1,/* namesize */ in cpio_mknod()
270 push_rest(name); in cpio_mknod()
274 static int cpio_mknod_line(const char *line) in cpio_mknod_line() argument
276 char name[PATH_MAX + 1]; in cpio_mknod_line() local
283 int rc = -1; in cpio_mknod_line()
285 if (7 != sscanf(line, "%" str(PATH_MAX) "s %o %d %d %c %u %u", in cpio_mknod_line()
286 name, &mode, &uid, &gid, &dev_type, &maj, &min)) { in cpio_mknod_line()
287 fprintf(stderr, "Unrecognized nod format '%s'", line); in cpio_mknod_line()
290 rc = cpio_mknod(name, mode, uid, gid, dev_type, maj, min); in cpio_mknod_line()
295 static int cpio_mkfile(const char *name, const char *location, in cpio_mkfile() argument
303 int file = -1; in cpio_mkfile()
305 int rc = -1; in cpio_mkfile()
340 if (name[0] == '/') in cpio_mkfile()
341 name++; in cpio_mkfile()
342 namesize = strlen(name) + 1; in cpio_mkfile()
360 push_string(name); in cpio_mkfile()
372 name += namesize; in cpio_mkfile()
400 static int cpio_mkfile_line(const char *line) in cpio_mkfile_line() argument
402 char name[PATH_MAX + 1]; in cpio_mkfile_line() local
410 int rc = -1; in cpio_mkfile_line()
412 if (5 > sscanf(line, "%" str(PATH_MAX) "s %" str(PATH_MAX) in cpio_mkfile_line()
414 name, location, &mode, &uid, &gid, &end)) { in cpio_mkfile_line()
415 fprintf(stderr, "Unrecognized file format '%s'", line); in cpio_mkfile_line()
418 if (end && isgraph(line[end])) { in cpio_mkfile_line()
422 dname = malloc(strlen(line)); in cpio_mkfile_line()
428 dname_len = strlen(name) + 1; in cpio_mkfile_line()
429 memcpy(dname, name, dname_len); in cpio_mkfile_line()
433 if (sscanf(line + end, "%" str(PATH_MAX) "s %n", in cpio_mkfile_line()
434 name, &nend) < 1) in cpio_mkfile_line()
436 len = strlen(name) + 1; in cpio_mkfile_line()
437 memcpy(dname + dname_len, name, len); in cpio_mkfile_line()
441 } while (isgraph(line[end])); in cpio_mkfile_line()
443 dname = name; in cpio_mkfile_line()
455 "\t%s [-t <timestamp>] <cpio_list>\n" in usage()
461 "file <name> <location> <mode> <uid> <gid> [<hard links>]\n" in usage()
462 "dir <name> <mode> <uid> <gid>\n" in usage()
463 "nod <name> <mode> <uid> <gid> <dev_type> <maj> <min>\n" in usage()
464 "slink <name> <target> <mode> <uid> <gid>\n" in usage()
465 "pipe <name> <mode> <uid> <gid>\n" in usage()
466 "sock <name> <mode> <uid> <gid>\n" in usage()
468 "<name> name of the file/dir/nod/etc in the archive\n" in usage()
524 char line[LINE_SIZE]; in main() local
535 if (opt == -1) in main()
554 if (argc - optind != 1) { in main()
559 if (!strcmp(filename, "-")) in main()
568 while (fgets(line, LINE_SIZE, cpio_list)) { in main()
570 size_t slen = strlen(line); in main()
574 if ('#' == *line) { in main()
575 /* comment - skip to next line */ in main()
579 if (! (type = strtok(line, " \t"))) { in main()
581 "ERROR: incorrect format, could not locate file type line %d: '%s'\n", in main()
582 line_nr, line); in main()
583 ec = -1; in main()
588 /* a blank line */ in main()
593 /* must be an empty line */ in main()
599 "ERROR: incorrect format, newline required line %d: '%s'\n", in main()
600 line_nr, line); in main()
601 ec = -1; in main()
606 if (! strcmp(line, file_handler_table[type_idx].type)) { in main()
609 fprintf(stderr, " line %d\n", line_nr); in main()
616 fprintf(stderr, "unknown file type line %d: '%s'\n", in main()
617 line_nr, line); in main()