不正な入出力ファイル名や無効な引数を避ける必要があります。私もこのようなものを使用しましたが、実際には役に立ちません:
while ((c = getopt(argc, argv, "i:o:")) != -1) {
switch (c) {
case 'i':
inFile = strdup(optarg);
break;
case 'o':
outFile = strdup(optarg);
break;
default:
//usage(argv[0]);
break;
}
}
if ((ptr1 = fopen(inFile, "r+")) == NULL) {
fprintf(stderr, "Error: cannot open file %s\n", inFile);
exit(-1);
}
if ((ptr = fopen(outFile, "w+")) == NULL) {
fprintf(stderr, "Error: cannot open file %s\n", outFile);
exit(-1);
}
私のプログラムをテストするpythonプログラムは次のとおりです。
class Arg2(Test):
name = "arg2"
description = "bad arguments"
timeout = 5
def run(self):
self.runexe(["fastsort", "a", "b", "c", "d"],
stderr = usage_error, status = 1)
self.done()
class Badin(Test):
name = "badin"
description = "bad input file"
timeout = 5
def run(self):
invalid = mktemp(prefix='/invalid/path/')
self.runexe(["fastsort", "-i", invalid, "-o", "outfile"],
stderr = "Error: Cannot open file {0}\n".format(invalid), status = 1)
self.done()
class Badout(Test):
name = "badout"
description = "bad output file"
timeout = 5
def run(self):
infile = self.project_path + "/infile"
# create a valid (empty) input file
open(infile, "a").close()
invalid = mktemp(prefix='/invalid/path/')
self.runexe(["fastsort", "-i", infile, "-o", invalid],
stderr = "Error: Cannot open file {0}\n".format(invalid), status = 1)
self.done()
不適切なファイル名/不適切なファイル パス、および C での無効な引数処理を回避する通常の方法のヒントとコード スニペットを教えてください。