Lines Matching +full:s +full:- +full:mode
1 // SPDX-License-Identifier: GPL-2.0
24 #define xstr(s) #s argument
25 #define str(s) xstr(s) argument
29 #define padlen(_off, _align) (((_align) - ((_off) & ((_align) - 1))) % (_align))
31 /* zero-padding the filename field for data alignment is limited by PATH_MAX */
52 return -1; in push_buf()
68 return -1; in push_pad()
80 return -1; in push_rest()
92 len = dprintf(outfd, "%s%08X%08X%08lX%08lX%08X%08lX" in cpio_trailer()
96 0, /* mode */ in cpio_trailer()
113 return -1; in cpio_trailer()
116 return -1; in cpio_trailer()
122 unsigned int mode, uid_t uid, gid_t gid) in cpio_mkslink() argument
131 len = dprintf(outfd, "%s%08X%08X%08lX%08lX%08X%08lX" in cpio_mkslink()
135 S_IFLNK | mode, /* mode */ in cpio_mkslink()
154 return -1; in cpio_mkslink()
164 unsigned int mode; in cpio_mkslink_line() local
167 int rc = -1; in cpio_mkslink_line()
169 …if (5 != sscanf(line, "%" str(PATH_MAX) "s %" str(PATH_MAX) "s %o %d %d", name, target, &mode, &ui… in cpio_mkslink_line()
170 fprintf(stderr, "Unrecognized dir format '%s'", line); in cpio_mkslink_line()
173 rc = cpio_mkslink(name, target, mode, uid, gid); in cpio_mkslink_line()
178 static int cpio_mkgeneric(const char *name, unsigned int mode, in cpio_mkgeneric() argument
188 len = dprintf(outfd, "%s%08X%08X%08lX%08lX%08X%08lX" in cpio_mkgeneric()
192 mode, /* mode */ in cpio_mkgeneric()
208 return -1; in cpio_mkgeneric()
221 mode_t mode; member
227 .mode = S_IFDIR
231 .mode = S_IFIFO
235 .mode = S_IFSOCK
242 unsigned int mode; in cpio_mkgeneric_line() local
245 int rc = -1; in cpio_mkgeneric_line()
247 if (4 != sscanf(line, "%" str(PATH_MAX) "s %o %d %d", name, &mode, &uid, &gid)) { in cpio_mkgeneric_line()
248 fprintf(stderr, "Unrecognized %s format '%s'", in cpio_mkgeneric_line()
252 mode |= generic_type_table[gt].mode; in cpio_mkgeneric_line()
253 rc = cpio_mkgeneric(name, mode, uid, gid); in cpio_mkgeneric_line()
273 static int cpio_mknod(const char *name, unsigned int mode, in cpio_mknod() argument
281 mode |= S_IFBLK; in cpio_mknod()
283 mode |= S_IFCHR; in cpio_mknod()
289 len = dprintf(outfd, "%s%08X%08X%08lX%08lX%08X%08lX" in cpio_mknod()
293 mode, /* mode */ in cpio_mknod()
309 return -1; in cpio_mknod()
317 unsigned int mode; in cpio_mknod_line() local
323 int rc = -1; in cpio_mknod_line()
325 if (7 != sscanf(line, "%" str(PATH_MAX) "s %o %d %d %c %u %u", in cpio_mknod_line()
326 name, &mode, &uid, &gid, &dev_type, &maj, &min)) { in cpio_mknod_line()
327 fprintf(stderr, "Unrecognized nod format '%s'", line); in cpio_mknod_line()
330 rc = cpio_mknod(name, mode, uid, gid, dev_type, maj, min); in cpio_mknod_line()
344 return -1; in cpio_mkfile_csum()
349 size -= this_read; in cpio_mkfile_csum()
353 return -1; in cpio_mkfile_csum()
359 unsigned int mode, uid_t uid, gid_t gid, in cpio_mkfile() argument
365 int rc = -1; in cpio_mkfile()
372 mode |= S_IFREG; in cpio_mkfile()
376 fprintf (stderr, "File %s could not be opened for reading\n", location); in cpio_mkfile()
382 fprintf(stderr, "File %s could not be stat()'ed\n", location); in cpio_mkfile()
391 fprintf(stderr, "%s: Timestamp exceeds maximum cpio timestamp, clipping.\n", in cpio_mkfile()
397 fprintf(stderr, "%s: Timestamp negative, clipping.\n", in cpio_mkfile()
404 fprintf(stderr, "%s: Size exceeds maximum cpio file size\n", in cpio_mkfile()
410 fprintf(stderr, "Failed to checksum file %s\n", location); in cpio_mkfile()
430 "%s: best-effort alignment %u missed\n", in cpio_mkfile()
436 len = dprintf(outfd, "%s%08X%08X%08lX%08lX%08X%08lX" in cpio_mkfile()
440 mode, /* mode */ in cpio_mkfile()
465 size -= this_read; in cpio_mkfile()
476 fprintf(stderr, "Can not read %s file\n", location); in cpio_mkfile()
485 size -= this_read; in cpio_mkfile()
510 snprintf(expanded, sizeof expanded, "%s%s%s", in cpio_replace_env()
523 unsigned int mode; in cpio_mkfile_line() local
528 int rc = -1; in cpio_mkfile_line()
530 if (5 > sscanf(line, "%" str(PATH_MAX) "s %" str(PATH_MAX) in cpio_mkfile_line()
531 "s %o %d %d %n", in cpio_mkfile_line()
532 name, location, &mode, &uid, &gid, &end)) { in cpio_mkfile_line()
533 fprintf(stderr, "Unrecognized file format '%s'", line); in cpio_mkfile_line()
551 if (sscanf(line + end, "%" str(PATH_MAX) "s %n", in cpio_mkfile_line()
564 mode, uid, gid, nlinks); in cpio_mkfile_line()
573 "\t%s [-t <timestamp>] [-c] [-o <output_file>] [-a <data_align>] <cpio_list>\n" in usage()
579 "file <name> <location> <mode> <uid> <gid> [<hard links>]\n" in usage()
580 "dir <name> <mode> <uid> <gid>\n" in usage()
581 "nod <name> <mode> <uid> <gid> <dev_type> <maj> <min>\n" in usage()
582 "slink <name> <target> <mode> <uid> <gid>\n" in usage()
583 "pipe <name> <mode> <uid> <gid>\n" in usage()
584 "sock <name> <mode> <uid> <gid>\n" in usage()
590 "<mode> mode/permissions of the file\n" in usage()
610 "-c: calculate and store 32-bit checksums for file data.\n" in usage()
612 "<data_align>: attempt to align file data by zero-padding the\n" in usage()
614 "Alignment is best-effort; PATH_MAX limits filename padding.\n", in usage()
659 if (opt == -1) in main()
665 fprintf(stderr, "Invalid timestamp: %s\n", in main()
680 fprintf(stderr, "failed to open %s\n", optarg); in main()
688 fprintf(stderr, "Invalid data_align: %s\n", in main()
702 * Timestamps after 2106-02-07 06:28:15 UTC have an ascii hex time_t in main()
711 if (argc - optind != 1) { in main()
716 if (!strcmp(filename, "-")) in main()
719 fprintf(stderr, "ERROR: unable to open '%s': %s\n\n", in main()
732 /* comment - skip to next line */ in main()
738 "ERROR: incorrect format, could not locate file type line %d: '%s'\n", in main()
740 ec = -1; in main()
756 "ERROR: incorrect format, newline required line %d: '%s'\n", in main()
758 ec = -1; in main()
773 fprintf(stderr, "unknown file type line %d: '%s'\n", in main()