static void stat_to_env (char *name, char type, struct tar_stat_info *st) { str_to_env ("TAR_VERSION", PACKAGE_VERSION); str_to_env ("TAR_ARCHIVE", *archive_name_cursor); dec_to_env ("TAR_VOLUME", archive_name_cursor - archive_name_array + 1); dec_to_env ("TAR_BLOCKING_FACTOR", blocking_factor); str_to_env ("TAR_FORMAT", archive_format_string (current_format == DEFAULT_FORMAT ? archive_format : current_format)); chr_to_env ("TAR_FILETYPE", type); oct_to_env ("TAR_MODE", st->stat.st_mode); str_to_env ("TAR_FILENAME", name); str_to_env ("TAR_REALNAME", st->file_name); str_to_env ("TAR_UNAME", st->uname); str_to_env ("TAR_GNAME", st->gname); time_to_env ("TAR_ATIME", st->atime); time_to_env ("TAR_MTIME", st->mtime); time_to_env ("TAR_CTIME", st->ctime); dec_to_env ("TAR_SIZE", st->stat.st_size); dec_to_env ("TAR_UID", st->stat.st_uid); dec_to_env ("TAR_GID", st->stat.st_gid); switch (type) { case 'b': case 'c': dec_to_env ("TAR_MINOR", minor (st->stat.st_rdev)); dec_to_env ("TAR_MAJOR", major (st->stat.st_rdev)); unsetenv ("TAR_LINKNAME"); break; case 'l': case 'h': unsetenv ("TAR_MINOR"); unsetenv ("TAR_MAJOR"); str_to_env ("TAR_LINKNAME", st->link_name); break; default: unsetenv ("TAR_MINOR"); unsetenv ("TAR_MAJOR"); unsetenv ("TAR_LINKNAME"); break; } }
static void stat_to_env (char *name, char type, struct tar_stat_info *st) { str_to_env ("TAR_VERSION", PACKAGE_VERSION); chr_to_env ("TAR_FILETYPE", type); oct_to_env ("TAR_MODE", st->stat.st_mode); str_to_env ("TAR_FILENAME", name); str_to_env ("TAR_REALNAME", st->file_name); str_to_env ("TAR_UNAME", st->uname); str_to_env ("TAR_GNAME", st->gname); time_to_env ("TAR_ATIME", st->atime); time_to_env ("TAR_MTIME", st->mtime); time_to_env ("TAR_CTIME", st->ctime); dec_to_env ("TAR_SIZE", st->stat.st_size); dec_to_env ("TAR_UID", st->stat.st_uid); dec_to_env ("TAR_GID", st->stat.st_gid); switch (type) { case 'b': case 'c': dec_to_env ("TAR_MINOR", minor (st->stat.st_rdev)); dec_to_env ("TAR_MAJOR", major (st->stat.st_rdev)); unsetenv ("TAR_LINKNAME"); break; case 'l': case 'h': unsetenv ("TAR_MINOR"); unsetenv ("TAR_MAJOR"); str_to_env ("TAR_LINKNAME", st->link_name); break; default: unsetenv ("TAR_MINOR"); unsetenv ("TAR_MAJOR"); unsetenv ("TAR_LINKNAME"); break; } }