31void 32show_file(char *title, char *fname) 33{ 34 FILE *fp; 35 char line[1024]; 36 int n; 37 38 if (!Quiet) 39 printf("%s%s", InfoPrefix, title); 40 fp = fopen(fname, "r"); 41 if (!fp) 42 printf("ERROR: show_file: Can't open '%s' for reading!\n", fname); 43 else { 44 while ((n = fread(line, 1, 1024, fp)) != 0) 45 fwrite(line, 1, n, stdout); 46 fclose(fp); 47 } 48 printf("\n"); /* just in case */ 49} 50 51void 52show_index(char *title, char *fname) 53{ 54 FILE *fp; 55 char line[MAXINDEXSIZE+2]; 56 57 if (!Quiet) 58 printf("%s%s", InfoPrefix, title); 59 fp = fopen(fname, "r"); 60 if (!fp) { 61 warnx("show_file: can't open '%s' for reading", fname); 62 return; 63 } 64 if(fgets(line, MAXINDEXSIZE+1, fp)) { 65 if(line[MAXINDEXSIZE-1] != '\n') 66 line[MAXINDEXSIZE] = '\n'; 67 line[MAXINDEXSIZE+1] = 0; 68 fputs(line, stdout); 69 } 70 fclose(fp); 71} 72 73/* Show a packing list item type. If type is -1, show all */ 74void 75show_plist(char *title, Package *plist, plist_t type) 76{ 77 PackingList p; 78 Boolean ign = FALSE; 79 80 if (!Quiet) 81 printf("%s%s", InfoPrefix, title); 82 p = plist->head; 83 while (p) { 84 if (p->type != type && type != -1) { 85 p = p->next; 86 continue; 87 } 88 switch(p->type) { 89 case PLIST_FILE: 90 if (ign) { 91 printf(Quiet ? "%s\n" : "File: %s (ignored)\n", p->name); 92 ign = FALSE; 93 } 94 else 95 printf(Quiet ? "%s\n" : "File: %s\n", p->name); 96 break; 97 98 case PLIST_CWD: 99 printf(Quiet ? "@cwd %s\n" : "\tCWD to %s\n", p->name); 100 break; 101 102 case PLIST_SRC: 103 printf(Quiet ? "@srcdir %s\n" : "\tSRCDIR to %s\n", p->name); 104 break; 105 106 case PLIST_CMD: 107 printf(Quiet ? "@exec %s\n" : "\tEXEC '%s'\n", p->name); 108 break; 109 110 case PLIST_UNEXEC: 111 printf(Quiet ? "@unexec %s\n" : "\tUNEXEC '%s'\n", p->name); 112 break; 113 114 case PLIST_CHMOD: 115 printf(Quiet ? "@chmod %s\n" : "\tCHMOD to %s\n", 116 p->name ? p->name : "(clear default)"); 117 break; 118 119 case PLIST_CHOWN: 120 printf(Quiet ? "@chown %s\n" : "\tCHOWN to %s\n", 121 p->name ? p->name : "(clear default)"); 122 break; 123 124 case PLIST_CHGRP: 125 printf(Quiet ? "@chgrp %s\n" : "\tCHGRP to %s\n", 126 p->name ? p->name : "(clear default)"); 127 break; 128 129 case PLIST_COMMENT: 130 printf(Quiet ? "@comment %s\n" : "\tComment: %s\n", p->name); 131 break; 132 133 case PLIST_IGNORE: 134 ign = TRUE; 135 break; 136 137 case PLIST_IGNORE_INST: 138 printf(Quiet ? "@ignore_inst ??? doesn't belong here.\n" : 139 "\tIgnore next file installation directive (doesn't belong)\n"); 140 ign = TRUE; 141 break; 142 143 case PLIST_NAME: 144 printf(Quiet ? "@name %s\n" : "\tPackage name: %s\n", p->name); 145 break; 146 147 case PLIST_DISPLAY: 148 printf(Quiet ? "@display %s\n" : "\tInstall message file: %s\n", p->name); 149 break; 150 151 case PLIST_PKGDEP: 152 printf(Quiet ? "@pkgdep %s\n" : "\tPackage depends on: %s\n", p->name); 153 break; 154 155 case PLIST_MTREE: 156 printf(Quiet ? "@mtree %s\n" : "\tPackage mtree file: %s\n", p->name); 157 break; 158 159 case PLIST_DIR_RM: 160 printf(Quiet ? "@dirrm %s\n" : "\tDeinstall directory remove: %s\n", p->name); 161 break; 162 163 default: 164 cleanup(0); 165 errx(2, "unknown command type %d (%s)", p->type, p->name); 166 break; 167 } 168 p = p->next; 169 } 170} 171 172/* Show all files in the packing list (except ignored ones) */ 173void 174show_files(char *title, Package *plist) 175{ 176 PackingList p; 177 Boolean ign = FALSE; 178 char *dir = "."; 179 180 if (!Quiet) 181 printf("%s%s", InfoPrefix, title); 182 p = plist->head; 183 while (p) { 184 switch(p->type) { 185 case PLIST_FILE: 186 if (!ign) 187 printf("%s/%s\n", dir, p->name); 188 ign = FALSE; 189 break; 190 191 case PLIST_CWD: 192 dir = p->name; 193 break; 194 195 case PLIST_IGNORE: 196 ign = TRUE; 197 break; 198 } 199 p = p->next; 200 } 201}
|