Ignore:
Timestamp:
Oct 17, 2017, 8:59:21 AM (21 months ago)
Author:
cameron
Message:

Unified FDsource kernel; filename - now interpreted as stdin

File:
1 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/icgrep.cpp

    r5692 r5693  
    178178
    179179    allFiles = getFullFileList(inputFiles);
    180     if ((allFiles.size() > 1) && !grep::NoFilenameFlag) {
     180    if (allFiles.empty()) {
     181        allFiles = { "-" };
     182    }
     183    else if ((allFiles.size() > 1) && !grep::NoFilenameFlag) {
    181184        grep::WithFilenameFlag = true;
    182185    }
     
    184187    grep::GrepEngine grepEngine;
    185188
    186     if (allFiles.empty()) {
    187 
    188         grepEngine.grepCodeGen(REs, grep::Mode, GrepSource::StdIn);
    189         allFiles = { "-" };
    190         grep::initFileResult(allFiles);
    191         grepEngine.doGrep(STDIN_FILENO, 0);
    192 
    193     } else {
    194189               
    195         grepEngine.grepCodeGen(REs, grep::Mode, GrepSource::File);
    196 
    197         grep::initFileResult(allFiles);
    198 
    199         if (Threads <= 1) {
    200             for (unsigned i = 0; i != allFiles.size(); ++i) {
    201                 grepEngine.doGrep(allFiles[i], i);
    202             }
    203         } else if (Threads > 1) {
    204             const unsigned numOfThreads = Threads; // <- convert the command line value into an integer to allow stack allocation
    205             pthread_t threads[numOfThreads];
    206 
    207             for(unsigned long i = 0; i < numOfThreads; ++i){
    208                 const int rc = pthread_create(&threads[i], nullptr, grep::DoGrepThreadFunction, (void *)&grepEngine);
    209                 if (rc) {
    210                     llvm::report_fatal_error("Failed to create thread: code " + std::to_string(rc));
    211                 }
    212             }
    213             for(unsigned i = 0; i < numOfThreads; ++i) {
    214                 void * status = nullptr;
    215                 const int rc = pthread_join(threads[i], &status);
    216                 if (rc) {
    217                     llvm::report_fatal_error("Failed to join thread: code " + std::to_string(rc));
    218                 }
    219             }
    220         }
    221 
    222     }
     190    grepEngine.grepCodeGen(REs, grep::Mode);
     191
     192    grep::initFileResult(allFiles);
     193
     194    if (Threads <= 1) {
     195        for (unsigned i = 0; i != allFiles.size(); ++i) {
     196            grepEngine.doGrep(allFiles[i], i);
     197        }
     198    } else if (Threads > 1) {
     199        const unsigned numOfThreads = Threads; // <- convert the command line value into an integer to allow stack allocation
     200        pthread_t threads[numOfThreads];
     201
     202        for(unsigned long i = 0; i < numOfThreads; ++i){
     203            const int rc = pthread_create(&threads[i], nullptr, grep::DoGrepThreadFunction, (void *)&grepEngine);
     204            if (rc) {
     205                llvm::report_fatal_error("Failed to create thread: code " + std::to_string(rc));
     206            }
     207        }
     208        for(unsigned i = 0; i < numOfThreads; ++i) {
     209            void * status = nullptr;
     210            const int rc = pthread_join(threads[i], &status);
     211            if (rc) {
     212                llvm::report_fatal_error("Failed to join thread: code " + std::to_string(rc));
     213            }
     214        }
     215    }
     216
    223217   
    224218    grep::PrintResults();
Note: See TracChangeset for help on using the changeset viewer.