Lines Matching defs:arcn

86 cpio_trail(ARCHD *arcn, char *notused, int notused2, int *notused3)
91 if ((strcmp(arcn->name, TRAILER) == 0) && (arcn->sb.st_size == 0))
104 com_rd(ARCHD *arcn)
106 arcn->skip = 0;
107 arcn->pat = NULL;
108 arcn->org_name = arcn->name;
109 switch (arcn->sb.st_mode & C_IFMT) {
111 arcn->type = PAX_FIF;
114 arcn->type = PAX_DIR;
117 arcn->type = PAX_BLK;
120 arcn->type = PAX_CHR;
123 arcn->type = PAX_SLK;
126 arcn->type = PAX_SCK;
135 arcn->sb.st_mode = (arcn->sb.st_mode & 0xfff) | C_ISREG;
136 arcn->type = PAX_REG;
137 arcn->skip = arcn->sb.st_size;
140 if (chk_lnk(arcn) < 0)
176 rd_nm(ARCHD *arcn, int nsz)
181 if ((nsz == 0) || ((size_t)nsz > sizeof(arcn->name))) {
189 if ((rd_wrbuf(arcn->name,nsz) != nsz) || (arcn->name[nsz-1] != '\0') ||
190 (arcn->name[0] == '\0')) {
206 rd_ln_nm(ARCHD *arcn)
211 if ((arcn->sb.st_size <= 0) ||
212 (arcn->sb.st_size >= (off_t)sizeof(arcn->ln_name))) {
214 arcn->sb.st_size);
221 if (rd_wrbuf(arcn->ln_name, (int)arcn->sb.st_size) !=
222 (int)arcn->sb.st_size) {
226 arcn->ln_nlen = arcn->sb.st_size;
227 arcn->ln_name[arcn->ln_nlen] = '\0';
232 if (arcn->ln_name[0] == '\0') {
269 cpio_rd(ARCHD *arcn, char *buf)
286 arcn->pad = 0;
287 arcn->sb.st_dev = (dev_t)asc_ul(hd->c_dev, sizeof(hd->c_dev), OCT);
288 arcn->sb.st_ino = (ino_t)asc_ul(hd->c_ino, sizeof(hd->c_ino), OCT);
289 arcn->sb.st_mode = (mode_t)asc_ul(hd->c_mode, sizeof(hd->c_mode), OCT);
290 arcn->sb.st_uid = (uid_t)asc_ul(hd->c_uid, sizeof(hd->c_uid), OCT);
291 arcn->sb.st_gid = (gid_t)asc_ul(hd->c_gid, sizeof(hd->c_gid), OCT);
292 arcn->sb.st_nlink = (nlink_t)asc_ul(hd->c_nlink, sizeof(hd->c_nlink),
294 arcn->sb.st_rdev = (dev_t)asc_ul(hd->c_rdev, sizeof(hd->c_rdev), OCT);
297 arcn->sb.st_mtime = MAX_TIME_T;
299 arcn->sb.st_mtime = val;
300 arcn->sb.st_mtim.tv_nsec = 0;
301 arcn->sb.st_ctim = arcn->sb.st_atim = arcn->sb.st_mtim;
302 arcn->sb.st_size = (off_t)asc_ull(hd->c_filesize,sizeof(hd->c_filesize),
311 arcn->nlen = nsz - 1;
312 if (rd_nm(arcn, nsz) < 0)
315 if (((arcn->sb.st_mode&C_IFMT) != C_ISLNK)||(arcn->sb.st_size == 0)) {
319 arcn->ln_nlen = 0;
320 arcn->ln_name[0] = '\0';
321 return(com_rd(arcn));
328 if (rd_ln_nm(arcn) < 0)
334 return(com_rd(arcn));
373 cpio_wr(ARCHD *arcn)
382 if (map_dev(arcn, CPIO_MASK, CPIO_MASK) < 0)
385 arcn->pad = 0;
386 nsz = arcn->nlen + 1;
388 if ((arcn->type != PAX_BLK) && (arcn->type != PAX_CHR))
389 arcn->sb.st_rdev = 0;
391 switch (arcn->type) {
398 if (ull_asc(arcn->sb.st_size, hd->c_filesize,
401 arcn->org_name);
409 if (ul_asc(arcn->ln_nlen, hd->c_filesize,
426 ul_asc(arcn->sb.st_dev, hd->c_dev, sizeof(hd->c_dev), OCT) ||
427 ul_asc(arcn->sb.st_ino, hd->c_ino, sizeof(hd->c_ino), OCT) ||
428 ul_asc(arcn->sb.st_mode, hd->c_mode, sizeof(hd->c_mode), OCT) ||
429 ul_asc(arcn->sb.st_uid, hd->c_uid, sizeof(hd->c_uid), OCT) ||
430 ul_asc(arcn->sb.st_gid, hd->c_gid, sizeof(hd->c_gid), OCT) ||
431 ul_asc(arcn->sb.st_nlink, hd->c_nlink, sizeof(hd->c_nlink), OCT) ||
432 ul_asc(arcn->sb.st_rdev, hd->c_rdev, sizeof(hd->c_rdev), OCT) ||
433 ull_asc(arcn->sb.st_mtime < 0 ? 0 : arcn->sb.st_mtime, hd->c_mtime,
442 (wr_rdbuf(arcn->name, nsz) < 0)) {
443 paxwarn(1, "Unable to write cpio header for %s", arcn->org_name);
451 if (PAX_IS_REG(arcn->type) || (arcn->type == PAX_HRG))
453 if (arcn->type != PAX_SLK)
460 if (wr_rdbuf(arcn->ln_name, arcn->ln_nlen) < 0) {
461 paxwarn(1,"Unable to write cpio link name for %s",arcn->org_name);
471 arcn->org_name);
537 vcpio_rd(ARCHD *arcn, char *buf)
557 arcn->pad = 0;
562 arcn->sb.st_ino = (ino_t)asc_ul(hd->c_ino, sizeof(hd->c_ino), HEX);
563 arcn->sb.st_mode = (mode_t)asc_ul(hd->c_mode, sizeof(hd->c_mode), HEX);
564 arcn->sb.st_uid = (uid_t)asc_ul(hd->c_uid, sizeof(hd->c_uid), HEX);
565 arcn->sb.st_gid = (gid_t)asc_ul(hd->c_gid, sizeof(hd->c_gid), HEX);
566 arcn->sb.st_mtime = (time_t)asc_ul(hd->c_mtime,sizeof(hd->c_mtime),HEX);
567 arcn->sb.st_mtim.tv_nsec = 0;
568 arcn->sb.st_ctim = arcn->sb.st_atim = arcn->sb.st_mtim;
569 arcn->sb.st_size = (off_t)asc_ull(hd->c_filesize,
571 arcn->sb.st_nlink = (nlink_t)asc_ul(hd->c_nlink, sizeof(hd->c_nlink),
575 arcn->sb.st_dev = TODEV(devmajor, devminor);
578 arcn->sb.st_rdev = TODEV(devmajor, devminor);
579 arcn->crc = asc_ul(hd->c_chksum, sizeof(hd->c_chksum), HEX);
587 arcn->nlen = nsz - 1;
588 if (rd_nm(arcn, nsz) < 0)
601 if (((arcn->sb.st_mode&C_IFMT) != C_ISLNK)||(arcn->sb.st_size == 0)) {
605 arcn->ln_nlen = 0;
606 arcn->ln_name[0] = '\0';
607 arcn->pad = VCPIO_PAD(arcn->sb.st_size);
608 return(com_rd(arcn));
614 if ((rd_ln_nm(arcn) < 0) ||
615 (rd_skip(VCPIO_PAD(arcn->sb.st_size)) < 0))
621 return(com_rd(arcn));
662 vcpio_wr(ARCHD *arcn)
672 if (map_dev(arcn, VCPIO_MASK, VCPIO_MASK) < 0)
674 nsz = arcn->nlen + 1;
676 if ((arcn->type != PAX_BLK) && (arcn->type != PAX_CHR))
677 arcn->sb.st_rdev = 0;
685 ul_asc(arcn->crc,hd->c_chksum,sizeof(hd->c_chksum), HEX))
693 switch (arcn->type) {
701 arcn->pad = VCPIO_PAD(arcn->sb.st_size);
702 if (ull_asc(arcn->sb.st_size, hd->c_filesize,
705 arcn->org_name);
714 arcn->pad = 0;
715 if (ul_asc(arcn->ln_nlen, hd->c_filesize,
723 arcn->pad = 0;
732 if (ul_asc(arcn->sb.st_ino, hd->c_ino, sizeof(hd->c_ino), HEX) ||
733 ul_asc(arcn->sb.st_mode, hd->c_mode, sizeof(hd->c_mode), HEX) ||
734 ul_asc(arcn->sb.st_uid, hd->c_uid, sizeof(hd->c_uid), HEX) ||
735 ul_asc(arcn->sb.st_gid, hd->c_gid, sizeof(hd->c_gid), HEX) ||
736 ul_asc(arcn->sb.st_mtime < 0 ? 0 : arcn->sb.st_mtime, hd->c_mtime,
738 ul_asc(arcn->sb.st_nlink, hd->c_nlink, sizeof(hd->c_nlink), HEX) ||
739 ul_asc(MAJOR(arcn->sb.st_dev),hd->c_maj, sizeof(hd->c_maj), HEX) ||
740 ul_asc(MINOR(arcn->sb.st_dev),hd->c_min, sizeof(hd->c_min), HEX) ||
741 ul_asc(MAJOR(arcn->sb.st_rdev),hd->c_rmaj,sizeof(hd->c_maj), HEX) ||
742 ul_asc(MINOR(arcn->sb.st_rdev),hd->c_rmin,sizeof(hd->c_min), HEX) ||
750 (wr_rdbuf(arcn->name, (int)nsz) < 0) ||
752 paxwarn(1,"Could not write sv4cpio header for %s",arcn->org_name);
759 if (PAX_IS_REG(arcn->type) || (arcn->type == PAX_HRG))
765 if (arcn->type != PAX_SLK)
771 if ((wr_rdbuf(arcn->ln_name, arcn->ln_nlen) < 0) ||
772 (wr_skip(VCPIO_PAD(arcn->ln_nlen)) < 0)) {
774 arcn->org_name);
783 paxwarn(1,"Sv4cpio header field is too small for file %s",arcn->org_name);
828 bcpio_rd(ARCHD *arcn, char *buf)
839 arcn->pad = 0;
845 arcn->sb.st_dev = (dev_t)(RSHRT_EXT(hd->h_dev));
846 arcn->sb.st_ino = (ino_t)(RSHRT_EXT(hd->h_ino));
847 arcn->sb.st_mode = (mode_t)(RSHRT_EXT(hd->h_mode));
848 arcn->sb.st_uid = (uid_t)(RSHRT_EXT(hd->h_uid));
849 arcn->sb.st_gid = (gid_t)(RSHRT_EXT(hd->h_gid));
850 arcn->sb.st_nlink = (nlink_t)(RSHRT_EXT(hd->h_nlink));
851 arcn->sb.st_rdev = (dev_t)(RSHRT_EXT(hd->h_rdev));
852 arcn->sb.st_mtime = (time_t)(RSHRT_EXT(hd->h_mtime_1));
853 arcn->sb.st_mtime = (arcn->sb.st_mtime << 16) |
855 arcn->sb.st_size = (off_t)(RSHRT_EXT(hd->h_filesize_1));
856 arcn->sb.st_size = (arcn->sb.st_size << 16) |
860 arcn->sb.st_dev = (dev_t)(SHRT_EXT(hd->h_dev));
861 arcn->sb.st_ino = (ino_t)(SHRT_EXT(hd->h_ino));
862 arcn->sb.st_mode = (mode_t)(SHRT_EXT(hd->h_mode));
863 arcn->sb.st_uid = (uid_t)(SHRT_EXT(hd->h_uid));
864 arcn->sb.st_gid = (gid_t)(SHRT_EXT(hd->h_gid));
865 arcn->sb.st_nlink = (nlink_t)(SHRT_EXT(hd->h_nlink));
866 arcn->sb.st_rdev = (dev_t)(SHRT_EXT(hd->h_rdev));
867 arcn->sb.st_mtime = (time_t)(SHRT_EXT(hd->h_mtime_1));
868 arcn->sb.st_mtime = (arcn->sb.st_mtime << 16) |
870 arcn->sb.st_size = (off_t)(SHRT_EXT(hd->h_filesize_1));
871 arcn->sb.st_size = (arcn->sb.st_size << 16) |
875 arcn->sb.st_mtim.tv_nsec = 0;
876 arcn->sb.st_ctim = arcn->sb.st_atim = arcn->sb.st_mtim;
884 arcn->nlen = nsz - 1;
885 if (rd_nm(arcn, nsz) < 0)
898 if (((arcn->sb.st_mode & C_IFMT) != C_ISLNK)||(arcn->sb.st_size == 0)){
902 arcn->ln_nlen = 0;
903 arcn->ln_name[0] = '\0';
904 arcn->pad = BCPIO_PAD(arcn->sb.st_size);
905 return(com_rd(arcn));
908 if ((rd_ln_nm(arcn) < 0) ||
909 (rd_skip(BCPIO_PAD(arcn->sb.st_size)) < 0))
915 return(com_rd(arcn));
944 bcpio_wr(ARCHD *arcn)
957 if (map_dev(arcn, BCPIO_MASK, BCPIO_MASK) < 0)
960 if ((arcn->type != PAX_BLK) && (arcn->type != PAX_CHR))
961 arcn->sb.st_rdev = 0;
964 switch (arcn->type) {
972 arcn->pad = BCPIO_PAD(arcn->sb.st_size);
973 hd->h_filesize_1[0] = CHR_WR_0(arcn->sb.st_size);
974 hd->h_filesize_1[1] = CHR_WR_1(arcn->sb.st_size);
975 hd->h_filesize_2[0] = CHR_WR_2(arcn->sb.st_size);
976 hd->h_filesize_2[1] = CHR_WR_3(arcn->sb.st_size);
979 if (arcn->sb.st_size != t_offt) {
981 arcn->org_name);
990 arcn->pad = 0;
991 hd->h_filesize_1[0] = CHR_WR_0(arcn->ln_nlen);
992 hd->h_filesize_1[1] = CHR_WR_1(arcn->ln_nlen);
993 hd->h_filesize_2[0] = CHR_WR_2(arcn->ln_nlen);
994 hd->h_filesize_2[1] = CHR_WR_3(arcn->ln_nlen);
997 if (arcn->ln_nlen != t_int)
1004 arcn->pad = 0;
1017 hd->h_dev[0] = CHR_WR_2(arcn->sb.st_dev);
1018 hd->h_dev[1] = CHR_WR_3(arcn->sb.st_dev);
1019 if (arcn->sb.st_dev != (dev_t)(SHRT_EXT(hd->h_dev)))
1021 hd->h_ino[0] = CHR_WR_2(arcn->sb.st_ino);
1022 hd->h_ino[1] = CHR_WR_3(arcn->sb.st_ino);
1023 if (arcn->sb.st_ino != (ino_t)(SHRT_EXT(hd->h_ino)))
1025 hd->h_mode[0] = CHR_WR_2(arcn->sb.st_mode);
1026 hd->h_mode[1] = CHR_WR_3(arcn->sb.st_mode);
1027 if (arcn->sb.st_mode != (mode_t)(SHRT_EXT(hd->h_mode)))
1029 hd->h_uid[0] = CHR_WR_2(arcn->sb.st_uid);
1030 hd->h_uid[1] = CHR_WR_3(arcn->sb.st_uid);
1031 if (arcn->sb.st_uid != (uid_t)(SHRT_EXT(hd->h_uid)))
1033 hd->h_gid[0] = CHR_WR_2(arcn->sb.st_gid);
1034 hd->h_gid[1] = CHR_WR_3(arcn->sb.st_gid);
1035 if (arcn->sb.st_gid != (gid_t)(SHRT_EXT(hd->h_gid)))
1037 hd->h_nlink[0] = CHR_WR_2(arcn->sb.st_nlink);
1038 hd->h_nlink[1] = CHR_WR_3(arcn->sb.st_nlink);
1039 if (arcn->sb.st_nlink != (nlink_t)(SHRT_EXT(hd->h_nlink)))
1041 hd->h_rdev[0] = CHR_WR_2(arcn->sb.st_rdev);
1042 hd->h_rdev[1] = CHR_WR_3(arcn->sb.st_rdev);
1043 if (arcn->sb.st_rdev != (dev_t)(SHRT_EXT(hd->h_rdev)))
1045 if (arcn->sb.st_mtime > 0) {
1046 hd->h_mtime_1[0] = CHR_WR_0(arcn->sb.st_mtime);
1047 hd->h_mtime_1[1] = CHR_WR_1(arcn->sb.st_mtime);
1048 hd->h_mtime_2[0] = CHR_WR_2(arcn->sb.st_mtime);
1049 hd->h_mtime_2[1] = CHR_WR_3(arcn->sb.st_mtime);
1052 if (arcn->sb.st_mtime != t_timet)
1058 nsz = arcn->nlen + 1;
1068 (wr_rdbuf(arcn->name, nsz) < 0) ||
1070 paxwarn(1, "Could not write bcpio header for %s", arcn->org_name);
1077 if (PAX_IS_REG(arcn->type) || (arcn->type == PAX_HRG))
1083 if (arcn->type != PAX_SLK)
1089 if ((wr_rdbuf(arcn->ln_name, arcn->ln_nlen) < 0) ||
1090 (wr_skip(BCPIO_PAD(arcn->ln_nlen)) < 0)) {
1091 paxwarn(1,"Could not write bcpio link name for %s",arcn->org_name);
1100 paxwarn(1,"Bcpio header field is too small for file %s", arcn->org_name);