Skip to content

Commit f23f420

Browse files
committed
ENH: Add file existence and readability checks for generator inputs
Improve error handling by introducing validation to ensure input files exist and are readable before proceeding, enhancing robustness of the generator.
1 parent 8d5e204 commit f23f420

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

generator/main.cpp

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,17 @@
5858

5959
#include <memory>
6060

61+
#include <QDebug>
62+
63+
static bool fileExistsAndReadable(const QString& filePath) {
64+
QFileInfo info(filePath);
65+
return info.exists() && info.isFile() &&
66+
(QFile(filePath).permissions() & QFileDevice::ReadUser);
67+
}
68+
6169
void displayHelp(GeneratorSet *generatorSet);
6270

71+
6372
namespace
6473
{
6574

@@ -284,8 +293,6 @@ int main(int argc, char *argv[])
284293
QString default_file = ":/trolltech/generator/qtscript_masterinclude.h";
285294
QString default_system = ":/trolltech/generator/build_all.txt";
286295

287-
QString fileName;
288-
QString typesystemFileName;
289296
QString pp_file = ".preprocessed.tmp";
290297

291298
QMap<QString, QString> args;
@@ -353,9 +360,11 @@ int main(int argc, char *argv[])
353360
}
354361
}
355362

356-
fileName = args.value("arg-1");
363+
// fileName is a required input file
364+
QString fileName = args.value("arg-1");
357365

358-
typesystemFileName = args.value("arg-2");
366+
// typesystemFileName is a required input file
367+
QString typesystemFileName = args.value("arg-2");
359368
if (args.contains("arg-3"))
360369
displayHelp(&*gs);
361370

@@ -368,6 +377,17 @@ int main(int argc, char *argv[])
368377
if (fileName.isEmpty() || typesystemFileName.isEmpty() )
369378
displayHelp(&*gs);
370379

380+
if (!fileExistsAndReadable(fileName))
381+
{
382+
printf("ERROR: first argument file '%s' does not exist or is not readable.\n", qPrintable(fileName));
383+
displayHelp(&*gs);
384+
}
385+
if (!fileExistsAndReadable(typesystemFileName))
386+
{
387+
printf("ERROR: second argument file '%s' does not exist or is not readable.\n", qPrintable(typesystemFileName));
388+
displayHelp(&*gs);
389+
}
390+
371391
if (!gs->readParameters(args))
372392
displayHelp(&*gs);
373393

0 commit comments

Comments
 (0)