📄 spsfix.c
字号:
/* * spsfix - repair incorrect ndrec fields in SPS files * * Written by: Joseph T. Buck * * Usage: spsfix [-vni] file [file2 ...] * * Options: * -v Report on every file * -n Don't change files, just report what needs fixing * -i Ask user before changing anything */#ifndef lintstatic char *sccs_id = "@(#)spsfix.c 1.1 11/5/86 EPI";#endif#include <stdio.h>#include <sps/sps.h>#include <sys/types.h>#include <sys/stat.h>#define LINLEN 80char *Program = "spsfix";main (argc, argv)char **argv;{ struct stat sbuf; long hpos, nr; struct header *h; FILE * strm; extern optind; extern char *optarg; char *mode = "r+", line[LINLEN]; int vflag = 0, nflag = 0, iflag = 0, i, c, synerr = 0, sezso = 0; while ((c = getopt (argc, argv, "vni")) != EOF) { switch (c) { case 'v': vflag++; break; case 'n': mode = "r"; nflag++; break; case 'i': iflag++; break; default: synerr++; } } if (synerr || optind == argc) USAGE ("spsfix [-vni] file [file ...]"); for (i = optind; i < argc; i++) { if ((strm = fopen (argv[i], mode)) == NULL) { Fprintf (stderr, "%s: can't open ", Program); perror (argv[i]); continue; } else if ((h = read_header (strm)) == NULL) { if (vflag) Fprintf (stderr, "%s: %s is not an SPS file\n", Program, argv[i]); (void) fclose (strm); continue; } hpos = ftell (strm); if (stat (argv[i], &sbuf) != 0) { perror (argv[i]); exit (1); } nr = (sbuf.st_size - hpos) / size_rec (h); if (nr != h -> common.ndrec) { Fprintf (stderr, "%s: says %ld records, really %ld records\n", argv[i], h -> common.ndrec, nr); if (iflag) { Fprintf (stderr, "repair [y/n]? "); fflush (stderr); (void) fgets (line, LINLEN, stdin); sezso = (line[0] == 'y' || line[0] == 'Y'); } if (nflag == 0 && sezso) { rewind (strm); h -> common.ndrec = nr; write_header (h, strm); } } else if (vflag) Fprintf (stderr, "%s has %ld records\n", argv[i], h -> common.ndrec); (void) fclose (strm); } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -