From cfc271baad9b4b19b6b1e8395e5258259c549f97 Mon Sep 17 00:00:00 2001 From: Samuel Gomes <47574584+a740g@users.noreply.github.com> Date: Sun, 2 Jun 2024 23:27:01 +0530 Subject: [PATCH] Make _FILES$ default to "*" filespec if filespec is an empty string --- internal/c/libqb/src/filesystem.cpp | 2 +- .../compile_tests/filesystem/filesys_test.bas | 41 +++++++++++++++++-- .../filesystem/filesys_test.output | 2 + 3 files changed, 40 insertions(+), 5 deletions(-) diff --git a/internal/c/libqb/src/filesystem.cpp b/internal/c/libqb/src/filesystem.cpp index bb9a49201..64d999c22 100644 --- a/internal/c/libqb/src/filesystem.cpp +++ b/internal/c/libqb/src/filesystem.cpp @@ -635,7 +635,7 @@ qbs *func__files(qbs *qbsFileSpec, int32_t passed) { std::string fileSpec(reinterpret_cast(qbsFileSpec->chr), qbsFileSpec->len); if (fileSpec.empty()) - fileSpec = "*.*"; + fileSpec = "*"; if (FS_DirectoryExists(filepath_fix_directory(fileSpec))) { directory = fileSpec; diff --git a/tests/compile_tests/filesystem/filesys_test.bas b/tests/compile_tests/filesystem/filesys_test.bas index 99de91fed..01ae33598 100644 --- a/tests/compile_tests/filesystem/filesys_test.bas +++ b/tests/compile_tests/filesystem/filesys_test.bas @@ -20,7 +20,7 @@ NAME "temp_dir" AS "dummy_dir" PRINT "_DIREXISTS(dummy_dir):"; _DIREXISTS("./dummy_dir") PRINT "Creating a temporary file inside dummy_dir" -DIM fileName AS STRING: fileName = CreateDummyFile$("./dummy_dir/") +DIM fileName AS STRING: fileName = CreateDummyFile("./dummy_dir/", ".tmp") PRINT "_FILEEXISTS(fileName):"; _FILEEXISTS(fileName) @@ -29,9 +29,41 @@ KILL fileName PRINT "Creating 10 dummy files inside dummy_dir" DIM i AS LONG: FOR i = 0 TO 9 - fileName = CreateDummyFile$("./dummy_dir/") + fileName = CreateDummyFile("./dummy_dir/", ".tmp") NEXT i +' Start _FILES$ test +CHDIR "dummy_dir" + +fileName = CreateDummyFile("./", "") + +i = 0 +DIM dirEntry AS STRING: dirEntry = _FILES$("") ' should count 13 entries + +DO WHILE LEN(dirEntry) > 0 + i = i + 1 + + dirEntry = _FILES$ +LOOP + +PRINT "Counted"; i; "entries." + +i = 0 +dirEntry = _FILES$("*.*") ' should count 12 entries + +DO WHILE LEN(dirEntry) > 0 + i = i + 1 + + dirEntry = _FILES$ +LOOP + +PRINT "Counted"; i; "entries." + +KILL fileName + +CHDIR ".." +' End _FILES$ test + PRINT "Deleting all 10 dummy files" KILL "./dummy_dir/*.tmp" @@ -44,9 +76,10 @@ test_failed: PRINT "Test failed!" SYSTEM 1 -FUNCTION CreateDummyFile$ (directory AS STRING) + +FUNCTION CreateDummyFile$ (directory AS STRING, extension AS STRING) DO - DIM fileName AS STRING: fileName = directory + LTRIM$(STR$(100! * (TIMER + RND))) + ".tmp" + DIM fileName AS STRING: fileName = directory + LTRIM$(STR$(100! * (TIMER + RND))) + extension LOOP WHILE _FILEEXISTS(fileName) DIM h AS LONG: h = FREEFILE diff --git a/tests/compile_tests/filesystem/filesys_test.output b/tests/compile_tests/filesystem/filesys_test.output index a006be315..c3ad5555c 100644 --- a/tests/compile_tests/filesystem/filesys_test.output +++ b/tests/compile_tests/filesystem/filesys_test.output @@ -7,5 +7,7 @@ Creating a temporary file inside dummy_dir _FILEEXISTS(fileName):-1 Deleting fileName Creating 10 dummy files inside dummy_dir +Counted 13 entries. +Counted 12 entries. Deleting all 10 dummy files Deleting dummy_dir