Attachment 'lfc-se-ls.cc'

Download

   1 // Dirty Hack in Perl to find all files on a particular SE -- C. Wissing, August 2006
   2 // Translated to C -- A. Vogel, March 2008
   3 
   4 #include <iostream>
   5 #include <regex.h>
   6 #include <sys/types.h>
   7 
   8 #include "lfc_api.h"
   9 #include "serrno.h"
  10 
  11 int main(int argc, char *argv[])
  12 {
  13     const char *self = argv[0];
  14     char *sename = 0;
  15     char *pattern = 0;
  16     regex_t preg;
  17     char errbuf[1024];
  18     int status = 0;
  19 
  20     switch (argc) {
  21     case 3:
  22         pattern = argv[2];
  23         if ((status = regcomp(&preg, pattern, REG_NOSUB))) {
  24             regerror(status, &preg, errbuf, 1024);
  25             std::cerr << self << ": " << errbuf << std::endl;
  26             return 1;
  27         }
  28         /* no break */
  29     case 2:
  30         sename = argv[1];
  31         break;
  32     default:
  33         std::cerr << "Usage: " << self << " SENAME [PATTERN]" << std::endl;
  34         return 1;
  35     }
  36 
  37     std::cerr << "Counting files on " << sename;
  38     if (pattern) std::cerr << " matching \"" << pattern << "\"";
  39     std::cerr << " ..." << std::endl;
  40 
  41     int nfiles = 0;
  42     lfc_list list;
  43     int flags = CNS_LIST_BEGIN;
  44     struct lfc_filereplica *replica;
  45 
  46     while ((replica = lfc_listreplicax(0, sename, 0, flags, &list))) {
  47         flags = CNS_LIST_CONTINUE;
  48 
  49         if (pattern) {
  50             if ((status = regexec(&preg, replica->sfn, 0, 0, 0))) {
  51                 if (status != REG_NOMATCH) {
  52                     regerror(status, &preg, errbuf, 1024);
  53                     std::cerr << self << ": " << errbuf << std::endl;
  54                 }
  55             } else {
  56                 std::cout << replica->sfn << std::endl;
  57                 ++nfiles;
  58             }
  59         } else {
  60             ++nfiles;
  61         }
  62     }
  63     if (serrno) std::cerr << argv[0] << ": " << sstrerror(serrno) << std::endl;
  64 
  65     lfc_listreplicax(0, sename, 0, CNS_LIST_END, &list);
  66     if (pattern) regfree(&preg);
  67 
  68     std::cerr << "Found " << nfiles << " file";
  69     if (nfiles != 1) std::cerr << "s";
  70     std::cerr << std::endl;
  71 }

Attached Files

To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.
  • [get | view] (2008-10-29 21:58:46, 0.8 KB) [[attachment:asc.c]]
  • [get | view] (2008-10-29 15:52:36, 0.6 KB) [[attachment:bbox]]
  • [get | view] (2008-10-29 15:52:48, 0.8 KB) [[attachment:bib2bib]]
  • [get | view] (2008-10-29 21:58:53, 0.0 KB) [[attachment:bits.c]]
  • [get | view] (2008-10-29 21:58:59, 0.7 KB) [[attachment:claus.c]]
  • [get | view] (2008-10-29 15:53:02, 0.9 KB) [[attachment:cvstags]]
  • [get | view] (2008-10-29 15:53:20, 0.7 KB) [[attachment:german2iso]]
  • [get | view] (2008-10-29 15:53:26, 1.1 KB) [[attachment:germanuml]]
  • [get | view] (2008-10-29 15:53:34, 0.4 KB) [[attachment:gnuplot_diff]]
  • [get | view] (2008-10-29 15:53:42, 1.2 KB) [[attachment:httphead]]
  • [get | view] (2008-10-30 10:56:00, 2.4 KB) [[attachment:ldapphone.cc]]
  • [get | view] (2008-10-29 21:59:14, 0.0 KB) [[attachment:leak.cc]]
  • [get | view] (2008-10-29 22:00:45, 1.3 KB) [[attachment:lfc-lr.cc]]
  • [get | view] (2008-10-29 22:00:55, 1.9 KB) [[attachment:lfc-se-ls.cc]]
  • [get | view] (2008-10-29 22:01:03, 2.2 KB) [[attachment:lfc-se-user.cc]]
  • [get | view] (2008-10-29 22:01:09, 1.5 KB) [[attachment:lfc-sfn2lfn.cc]]
  • [get | view] (2008-10-29 21:59:35, 0.4 KB) [[attachment:liststat.cc]]
  • [get | view] (2008-10-29 21:59:41, 0.2 KB) [[attachment:listsum.cc]]
  • [get | view] (2008-10-29 21:59:47, 0.4 KB) [[attachment:listtab.cc]]
  • [get | view] (2008-10-29 15:53:55, 1.3 KB) [[attachment:lsf]]
  • [get | view] (2008-10-29 15:54:01, 0.3 KB) [[attachment:mangrep]]
  • [get | view] (2008-10-29 15:54:09, 0.4 KB) [[attachment:msec2time]]
  • [get | view] (2008-10-29 15:54:17, 0.3 KB) [[attachment:notouch]]
  • [get | view] (2008-10-29 15:54:27, 1.1 KB) [[attachment:pathgrep]]
  • [get | view] (2008-10-29 21:59:55, 0.7 KB) [[attachment:realtime.cc]]
  • [get | view] (2008-10-29 15:54:39, 0.5 KB) [[attachment:root2iso]]
  • [get | view] (2008-10-29 15:54:47, 0.4 KB) [[attachment:rpath]]
  • [get | view] (2008-10-29 15:54:58, 0.7 KB) [[attachment:sourcegrep]]
  • [get | view] (2008-10-29 15:55:06, 0.3 KB) [[attachment:system]]
  • [get | view] (2008-10-29 22:00:07, 1.6 KB) [[attachment:timeout.c]]
  • [get | view] (2008-11-18 12:03:33, 0.4 KB) [[attachment:unicode]]
  • [get | view] (2008-10-29 22:00:15, 0.4 KB) [[attachment:unixtime2time.c]]
  • [get | view] (2008-10-29 15:55:18, 0.1 KB) [[attachment:win]]
 All files | Selected Files: delete move to page copy to page

You are not allowed to attach a file to this page.