add num_changes to changeset dump. unsure whether this is a good idea since
authorFrederik Ramm <frederik@remote.org>
Mon, 21 Dec 2009 08:04:47 +0000 (08:04 +0000)
committerFrederik Ramm <frederik@remote.org>
Mon, 21 Dec 2009 08:04:47 +0000 (08:04 +0000)
num_changes is not in the API response, but then again definitely useful...
revert if you think it's no good

output_osm.c
output_osm.h
planet06_pg.cpp

index 1b74c8d..afb2b15 100644 (file)
@@ -29,7 +29,7 @@ const char *xmlescape(const char *in)
     // To fix this we'd need to fix the DB output parameters too
 #ifdef USE_ICONV 
     if (cd != ICONV_ERROR) {
-        char iconv_tmp[1024];
+        char iconv_tmp[2048];
         char *inbuf = in, *outbuf = iconv_tmp;
         size_t ret;
         size_t inlen = strlen(inbuf);
@@ -67,8 +67,7 @@ const char *xmlescape(const char *in)
             strcpy(&escape_tmp[len], "&quot;");
             len += strlen("&quot;");
         } else if ((*in >= 0) && (*in < 32)) {
-            escape_tmp[len] = '?';
-            len++;
+            len+=sprintf(&escape_tmp[len], "&#%d;", *in);
         } else {
             escape_tmp[len] = *in;
             len++;
@@ -93,10 +92,11 @@ void osm_tags(struct keyval *tags)
    resetList(tags);
 }
 
-void osm_changeset(int id, const char *user, const char *created_at, const char *closed_at, int has_bbox, 
+void osm_changeset(int id, const char *user, const char *created_at, const char *closed_at, 
+           int num_changes, int has_bbox, 
                   long double min_lat, long double max_lat, long double min_lon, long double max_lon, 
                   int open, struct keyval *tags) {
-  printf(INDENT "<changeset id=\"%d\" created_at=\"%s\" ", id, created_at);
+  printf(INDENT "<changeset id=\"%d\" created_at=\"%s\" num_changes=\"%d\" ", id, created_at, num_changes);
   if (open) {
     printf("open=\"true\" ");
   } else {
index 5cb18f4..35103f4 100644 (file)
@@ -9,7 +9,8 @@
  */
 const char *xmlescape(const char *in);
 
-void osm_changeset(int id, const char *user, const char *created_at, const char *closed_at, int has_bbox, 
+void osm_changeset(int id, const char *user, const char *created_at, const char *closed_at, 
+           int num_changes, int has_bbox, 
                   long double min_lat, long double max_lat, long double min_lon, long double max_lon, 
                   int open, struct keyval *tags);
 
index 131c3ae..78644eb 100644 (file)
@@ -259,6 +259,7 @@ void changesets(pqxx::work &xaction) {
                    lookup_user(row[1].c_str()), // user_id
                    created_at, // created_at
                    reformDate(row[3].c_str()), // closed_at
+            row[4].as<int>(), // num_changes
                    null_bbox ? 0 : 1,
                    null_bbox ? 0 : row[5].as<int>() / SCALE, // min_lat
                    null_bbox ? 0 : row[6].as<int>() / SCALE, // max_lat