]> git.sesse.net Git - nbtscanner/blobdiff - mysql_interface.c
Import nbtscanner 0.1.1.
[nbtscanner] / mysql_interface.c
index c51633a455d264f6610d41aeb2340952b9373a5e..8baa345aae39265ea76494a0f50c7c690b6a9225 100644 (file)
@@ -23,6 +23,7 @@
  */
 
 #include <stdio.h>
+#include <string.h>
 #include <stdlib.h>
 #include <mysql.h>
 
@@ -56,9 +57,16 @@ void init_mysql(char *host, char *username, char *password)
 void add_record_mysql(char *ip, char *hostname, char *fileservername, char *groupname)
 {
        char query[256];
+       char hname[256], fsname[256], gname[256];
+       int i;
+
+       mysql_real_escape_string(mysql, hname, hostname, strlen(hostname));
+       mysql_real_escape_string(mysql, fsname, fileservername, strlen(fileservername));
+       mysql_real_escape_string(mysql, gname, groupname, strlen(groupname));
+
        snprintf(query, 256,
                "REPLACE INTO nbtscanner.nbtscanner SET ip='%s', hostname='%s', fileservername='%s', groupname='%s';",
-               ip, hostname, fileservername, groupname);
+               ip, hname, fsname, gname);
 
        if (mysql_query(mysql, query) != 0) {
                if (verbosity >= 1) {
@@ -90,7 +98,7 @@ void print_all_records_mysql()
        unsigned int num_fields;
        int i;
 
-       if (mysql_query(mysql, "SELECT ip,fileservername,groupname,(fileservername <> '-unknown-nbtscanner-') FROM nbtscanner.nbtscanner;") != 0) {
+       if (mysql_query(mysql, "SELECT ip,(CASE WHEN fileservername='-unknown-nbtscanner-' THEN hostname ELSE fileservername END),groupname,(fileservername <> '-unknown-nbtscanner-') FROM nbtscanner.nbtscanner;") != 0) {
                if (verbosity >= 1) {
                        fprintf(stderr, "mysql_query('SELECT ip'...) failed\n");
                }
@@ -117,12 +125,12 @@ void print_all_records_mysql()
 
                        /* strip away CR/LFs */
                        for (j = 0; j < lengths[i]; j++) {
-                               if (row[i][j] == 0 || row[i][j] == 10 || row[i][j] == 13) {
+                               if (row[i][j] == 0 || row[i][j] == 10 || row[i][j] == 13 || row[i][j] == ',') {
                                        row[i][j] = '?';
                                }
                        }
                        printf("%.*s", (int) lengths[i], row[i] ? row[i] : "NULL");
-                       if (i != num_fields - 1) putchar(0);
+                       if (i != num_fields - 1) printf(",");
                }
                printf("\r\n");
         }