1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
|
Improve the feedback to the user and make a better implementation of
the usage explanations.
--- a/src/LutefiskMain.c
+++ b/src/LutefiskMain.c
@@ -81,6 +81,27 @@
char versionString[256] = "LutefiskXP v1.0.7\nCopyright 1996-1906 Richard S. Johnson\n\n";
+
+static void usage(void)
+{
+ /* print usage */
+ puts("\nUSAGE: lutefisk [options] [CID file pathname]\n");
+ puts( " The following options are available:\n");
+ puts( " -o = output file pathname");
+ puts( " -q = quiet mode ON (default OFF)");
+ puts( " -m = precursor ion mass");
+ puts( " -d = details file pathname");
+ puts( " Default: /usr/share/lutefisk/Lutefisk.details");
+ puts( " -p = params file pathname");
+ puts( " -r = residues file pathname");
+ puts( " Default: /usr/share/lutefisk/Lutefisk.residues");
+ puts( " -s = pathnane of file with database sequences to score");
+ puts( " -v = verbose mode ON (default OFF)");
+ puts( " -h = print this help text");
+ puts( "" );
+ puts("\n");
+}
+
/*
//--------------------------------------------------------------------------------
// main()
@@ -604,82 +625,94 @@
strcpy(gParam.outputFile,"");
- strcpy(gParam.detailsFilename,"Lutefisk.details");
-
- strcpy(gParam.residuesFilename,"Lutefisk.residues");
+ strcpy(gParam.detailsFilename,"/usr/share/lutefisk/Lutefisk.details");
+ strcpy(gParam.residuesFilename,"/usr/share/lutefisk/Lutefisk.residues");
+ /* get command-line parameters */
+
+ if (argc < 2)
+ {
+ usage();
+ exit(1);
+ }
- /* get command-line parameters */
-
- while ((c = getopt(argc, argv, "?hqvd:o:m:p:r:s:")) != -1)
- {
+ while ((c = getopt(argc, argv, "?hqvd:o:m:p:r:s:")) != -1)
+ {
switch (c)
- {
+ {
- case 'o':
+ case 'o':
/* output file name */
- strncpy(gParam.outputFile, optarg, sizeof(gParam.outputFile));
- break;
+ if (memccpy(gParam.outputFile, optarg, '\x0', sizeof(gParam.outputFile)) == NULL)
+ {
+ fprintf(stderr, "Argument filename max length = %d caracters", sizeof(gParam.outputFile) - 1 );
+ exit(1);
+ }
+ break;
- case 'd':
+ case 'd':
/* details file name */
- strncpy(gParam.detailsFilename, optarg, sizeof(gParam.detailsFilename));
+ if (memccpy(gParam.detailsFilename, optarg, '\x0', sizeof(gParam.detailsFilename)) == NULL)
+ {
+ fprintf(stderr, "Argument filename max length = %d caracters", sizeof(gParam.detailsFilename) - 1 );
+ exit(1);
+ }
break;
- case 'm':
+ case 'm':
/* peptide MW */
gParam.peptideMW = atof(optarg);
break;
- case 'p':
+ case 'p':
/* param file name */
- strncpy(gParam.paramFile, optarg, sizeof(gParam.paramFile));
+ if (memccpy(gParam.paramFile, optarg, '\x0', sizeof(gParam.paramFile)) == NULL)
+ {
+ fprintf(stderr, "Argument filename max length = %d caracters", sizeof(gParam.paramFile) - 1 );
+ exit(1);
+ }
break;
- case 'q':
+ case 'q':
/* QUIET! */
gParam.fMonitor = FALSE;
gParam.fVerbose = FALSE;
break;
- case 'r':
- /* residues file name */
- strncpy(gParam.residuesFilename, optarg, sizeof(gParam.residuesFilename));
- break;
-
- case 's':
- /* database sequences file */
- strncpy(gParam.databaseSequences, optarg, sizeof(gParam.databaseSequences));
- break;
-
- case 'v':
+ case 'r':
+ /* residues file name */
+ if (memccpy(gParam.residuesFilename, optarg, '\x0', sizeof(gParam.residuesFilename)) == NULL)
+ {
+ fprintf(stderr, "Argument filename max length = %d caracters", sizeof(gParam.residuesFilename) - 1 );
+ exit(1);
+ }
+ break;
+
+ case 's':
+ /* database sequences file */
+ if (memccpy(gParam.databaseSequences, optarg, '\x0', sizeof(gParam.databaseSequences)) == NULL)
+ {
+ fprintf(stderr, "Argument filename max length = %d caracters", sizeof(gParam.databaseSequences) - 1 );
+ exit(1);
+ }
+ break;
+
+ case 'v':
/* verbose */
gParam.fVerbose = TRUE;
break;
- case '?':
- case 'h':
- /* print usage */
- puts("\nUSAGE: lutefisk [options] [CID file pathname]\n");
- puts( " -o = output file pathname");
- puts( " -q = quiet mode ON (default OFF)");
- puts( " -m = precursor ion mass");
- puts( " -d = details file pathname");
- puts( " -p = params file pathname");
- puts( " -r = residues file pathname");
- puts( " -s = pathnane of file with database sequences to score");
- puts( " -v = verbose mode ON (default OFF)");
- puts( " -h = print this help text");
- puts( "" );
- puts("\n");
- exit(1);
-
- break;
- }
- }
-
+ case '?':
+ case 'h':
+ /* print usage */
+ usage();
+ exit(1);
+
+ break;
+ }
+ }
/* report flag state */
|