]> projects.mako.cc - wikiq/commitdiff
Merge pull request #2 from makoshark/master
authorErik Garrison <erik.garrison@gmail.com>
Mon, 6 Jun 2011 23:15:49 +0000 (16:15 -0700)
committerErik Garrison <erik.garrison@gmail.com>
Mon, 6 Jun 2011 23:15:49 +0000 (16:15 -0700)
regex titles and static linking

Makefile
disorder.h
wikiq.cpp

index 12459edfc806e0a20ed8d487256272c94d2e430a..cc0e56f806924b23304046c2361bfdce5c541001 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,21 +1,21 @@
-CXX = g++
-CFLAGS = -O3
-OBJECTS = disorder.o md5.o
+CXXFLAGS = -O3 
+CFLAGS = $(CXXFLAGS)
+OBJECTS = wikiq.o md5.o disorder.o 
 
 all: wikiq
 
-wikiq: wikiq.cpp $(OBJECTS)
-       $(CXX) $(CFLAGS) -lpcrecpp -lexpat wikiq.cpp $(OBJECTS) -o wikiq
+wikiq: $(OBJECTS)
+       $(CXX) $(CXXFLAGS) $(OBJECTS) -lpcrecpp -lpcre -lexpat -o wikiq
 
-disorder.o: disorder.c disorder.h
-       $(CXX) $(CFLAGS) -c disorder.c
-
-md5.o: md5.c md5.h
-       $(CXX) $(CFLAGS) -c md5.c -lm
+disorder.o: disorder.h
+md5.o: md5.h
 
 clean:
        rm -f wikiq $(OBJECTS)
 
+static: $(OBJECTS)
+       $(CXX) $(CXXFLAGS) $(OBJECTS) -static -lpcrecpp -lpcre -lexpat -o wikiq
+
 gprof:
        $(MAKE) CFLAGS=-pg wikiq
 
index 345877445ed918840d6c521b0e481dab9746e3f3..91ec47d9371c9a7c0d194835b803601a3bb8042e 100644 (file)
 #ifndef __DISORDER_H_
 #define __DISORDER_H_
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /** Max number of bytes (i.e., tokens) */
 #define LIBDO_MAX_BYTES      256
 
@@ -59,4 +63,8 @@ float    get_max_entropy(void);
 /** Returns the ratio of entropy to maxentropy */
 float    get_entropy_ratio(void);
 
+#ifdef __cplusplus
+};
+#endif
+
 #endif
index da5e7b74d50c484242f1731d016140822b8e12cc..e8ca4d280c174d5d458983a75f66d722b3ebd903 100644 (file)
--- a/wikiq.cpp
+++ b/wikiq.cpp
@@ -57,6 +57,7 @@ typedef struct {
     char *text;
     vector<string> last_text_tokens;
     vector<pcrecpp::RE> regexes;
+    vector<pcrecpp::RE> wp_namespace_res;
     vector<string> regex_names;
     map<string, string> revision_md5; // used for detecting reversions
 
@@ -246,6 +247,22 @@ write_row(revisionData *data)
         ++pos;
     }
 
+    // skip this if the wp_namespace is not in the proscribed list of
+    // namespaces
+    bool wp_namespace_found = false;
+    if (!data->wp_namespace_res.empty()) {
+        for (vector<pcrecpp::RE>::iterator r = data->wp_namespace_res.begin(); r != data->wp_namespace_res.end(); ++r) {
+            pcrecpp::RE& wp_namespace_re = *r;
+            if (wp_namespace_re.PartialMatch(data->title)) {
+                wp_namespace_found = true;
+                break;
+            }
+        }
+        if (!wp_namespace_found) {
+            return;
+        }
+    }
+
     //vector<string> additions;
     //vector<string> deletions;
     string additions;
@@ -488,9 +505,10 @@ void print_usage(char* argv[]) {
     cerr << "usage: <wikimedia dump xml> | " << argv[0] << "[options]" << endl
          << endl
          << "options:" << endl
-         << "  -t   print text and comments after each line of tab separated data" << endl
+         << "  -v   verbose mode prints text and comments after each line of tab separated data" << endl
          << "  -n   name of the following regex (e.g. -n name -r \"...\")" << endl
          << "  -r   regex to check against additions and deletions" << endl
+         << "  -t   regex(es) to check title against as a way of limiting output to specific namespaces" << endl
          << endl
          << "Takes a wikimedia data dump XML stream on standard in, and produces" << endl
          << "a tab-separated stream of revisions on standard out:" << endl
@@ -521,13 +539,13 @@ main(int argc, char *argv[])
     // the user data struct which is passed to callback functions
     revisionData data;
 
-    while ((c = getopt(argc, argv, "htn:r:")) != -1)
+    while ((c = getopt(argc, argv, "hvn:r:t:")) != -1)
         switch (c)
         {
             case 'd':
                 dry_run = 1;
                 break;
-            case 't':
+            case 'v':
                 output_type = FULL;
                 break;
             case 'n':
@@ -544,6 +562,9 @@ main(int argc, char *argv[])
                 print_usage(argv);
                 exit(0);
                 break;
+            case 't':
+                data.wp_namespace_res.push_back(pcrecpp::RE(optarg, pcrecpp::UTF8()));
+                break;
         }
 
     if (dry_run) { // lets us print initialization options

Benjamin Mako Hill || Want to submit a patch?