comparison simtool/pbrestore.c @ 88:ae831b21ef77

lnd-restore command implemented
author Mychaela Falconia <falcon@freecalypso.org>
date Wed, 17 Feb 2021 07:16:31 +0000
parents bc862d41f96b
children 9c10afbb745a
comparison
equal deleted inserted replaced
87:bc862d41f96b 88:ae831b21ef77
198 } 198 }
199 } 199 }
200 fclose(inf); 200 fclose(inf);
201 return(0); 201 return(0);
202 } 202 }
203
204 cmd_lnd_restore(argc, argv)
205 char **argv;
206 {
207 int rc;
208 FILE *inf;
209 int lineno;
210 char linebuf[1024];
211 u_char *databuf;
212
213 rc = select_ef_lnd();
214 if (rc < 0)
215 return(rc);
216 databuf = malloc(curfile_total_size);
217 if (!databuf) {
218 perror("malloc for full EF_LND");
219 return(-1);
220 }
221 inf = fopen(argv[1], "r");
222 if (!inf) {
223 perror(argv[1]);
224 free(databuf);
225 return(-1);
226 }
227 memset(databuf, 0xFF, curfile_total_size);
228 for (lineno = 1; fgets(linebuf, sizeof linebuf, inf); lineno++) {
229 if (!index(linebuf, '\n')) {
230 fprintf(stderr,
231 "%s line %d: too long or missing newline\n",
232 argv[1], lineno);
233 fclose(inf);
234 free(databuf);
235 return(-1);
236 }
237 if (linebuf[0] != '#' || !isdigit(linebuf[1]))
238 continue;
239 rc = process_record(linebuf, databuf, argv[1], lineno);
240 if (rc < 0) {
241 fclose(inf);
242 free(databuf);
243 return(rc);
244 }
245 }
246 fclose(inf);
247 rc = restore_bin_cyclic(databuf);
248 free(databuf);
249 return(rc);
250 }