Browse Source

Cleaned up warnings. Fixed utils test.

This should build on the notebook now.
Went back to C++ 14 (instead of 17).
Enabled all warnings (if using gcc/g++).

test-utils was random_activate() changes.
Steve Thielemann 4 years ago
parent
commit
b0fdb32f76
10 changed files with 71 additions and 53 deletions
  1. 6 4
      CMakeLists.txt
  2. 10 11
      charman.cpp
  3. 7 8
      hharry.cpp
  4. 0 1
      images.cpp
  5. 7 7
      render.cpp
  6. 11 13
      terminal.cpp
  7. 21 0
      test-utils.cpp
  8. 7 6
      utils.cpp
  9. 2 1
      utils.h
  10. 0 2
      wordplay.cpp

+ 6 - 4
CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.5)
 
 project(horrible-harry)
 
@@ -19,7 +19,7 @@ endif()
 ## https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_macros.html
 ## During Debug, use debug version of libstdc++ (asserts on access to invalid iterators, etc!)
 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_DEBUG")
-
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
 
 ###########
 # Suppress certain warnings
@@ -31,8 +31,8 @@ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_DEBUG")
 ##############
 # C++ Standard
 ##############
-## set(CMAKE_CXX_STANDARD   14)
-set(CMAKE_CXX_STANDARD   17)
+set(CMAKE_CXX_STANDARD   14)
+## set(CMAKE_CXX_STANDARD   17)
 set(CMAKE_CXX_EXTENSIONS ON)
 
 
@@ -121,8 +121,10 @@ add_executable(try-re try-re.c)
 
 add_executable(ansi-color ansi-color.c)
 add_executable(ansi-to-src ansi-to-src.cpp utils.cpp)
+target_compile_definitions(ansi-to-src PUBLIC NO_BUFFER_DEBUG=1)
 
 add_executable(images images.cpp utils.cpp images.h)
 target_link_libraries(images zf_log)
+target_compile_definitions(images PUBLIC NO_BUFFER_DEBUG=1)
 
 

+ 10 - 11
charman.cpp

@@ -9,13 +9,13 @@
 
 void CharMan::validate(void) {
   // Control buffer debugging output.
-#ifndef NO_BUFFER_DEBUG  
+#ifndef NO_BUFFER_DEBUG
   bool valid = true;
   ZF_LOGE("validate: text_offsets %d", (int)text_offsets.size());
   ZF_LOGE("validate work size %d, buffer size %d, text size %d",
           (int)work.size(), (int)buffer.size(), (int)text.size());
 
-  for (int x = 0; x < text_offsets.size(); ++x) {
+  for (int x = 0; x < (int)text_offsets.size(); ++x) {
     int offset = text_offsets[x];
     ZF_LOGE("%d : %d", x, offset);
 
@@ -36,12 +36,12 @@ void CharMan::validate(void) {
     ZF_LOGE("* NOT VALID*  Somethings hosed.");
     diagnostics();
   }
-#endif  
+#endif
 }
 
 void CharMan::diagnostics(void) {
   // Control buffer debugging output.
-#ifndef NO_BUFFER_DEBUG  
+#ifndef NO_BUFFER_DEBUG
   ZF_LOGV_MEM(buffer.data(), buffer.size(), "Buffer:");
   ZF_LOGV_MEM(work.data(), work.size(), "Work:");
   ZF_LOGV_MEM(text.data(), text.size(), "Text Buffer:");
@@ -69,7 +69,7 @@ void CharMan::diagnostics(void) {
   // reset oss (if we need it)
   oss.str(std::string());
   oss.clear();
-#endif  
+#endif
 }
 
 void CharMan::regular_expressions(void) {
@@ -104,7 +104,7 @@ void CharMan::insert(int pos, std::string str) {
   int len = str.size();
   // What happens if pos is at the end of the buffer?
   int idx;
-  if (pos == text_offsets.size()) {
+  if (pos == (int)text_offsets.size()) {
     // Ok, this is at the very end of the buffer, which is beyond what the
     // vector is holding.
     idx = this->text_offsets[pos - 1] + 1;
@@ -209,7 +209,6 @@ int CharMan::word_wrangler(std::pair<int, int> pos_len) {
   Print some characters slowly.  Delay.
  */
 int CharMan::word_tangler(std::pair<int, int> pos_len) {
-  int count = 0;
   int p;
   int len;
 
@@ -263,9 +262,9 @@ CharMan::CharMan(std::string &buffer, std::string &work, std::string &text,
   regular_expressions();
   ZF_LOGD("Found %d word groups", (int)pos_len.size());
   if (pos_len.size() > 0) {
-    for (int i = 0; i < pos_len.size(); ++i) {
+    for (int i = 0; i < (int)pos_len.size(); ++i) {
       int active = 0;
-      //if (random_activate((level + 1) / 2)) { // 8
+      // if (random_activate((level + 1) / 2)) { // 8
       if (random_activate(level * 11)) { // level = 4, so it's 44
         int c = word_mangler(pos_len[i]);
         if (c) {
@@ -275,7 +274,7 @@ CharMan::CharMan(std::string &buffer, std::string &work, std::string &text,
         }
       }
 
-      //if (random_activate((level + 1) / 2)) { // 4
+      // if (random_activate((level + 1) / 2)) { // 4
       if (random_activate(level * 11)) { // level = 4, so it's 44
         if (word_wrangler(pos_len[i])) {
           this->mangle_count++;
@@ -283,7 +282,7 @@ CharMan::CharMan(std::string &buffer, std::string &work, std::string &text,
         }
       }
 
-      if (!active && random_activate(level)) { //level = 4, so it's 4
+      if (!active && random_activate(level)) { // level = 4, so it's 4
         if (word_tangler(pos_len[i])) {
           this->need_render = 1;
         }

+ 7 - 8
hharry.cpp

@@ -186,12 +186,12 @@ void scan_mystic_log(void) {
         ZF_LOGE("New User");
       }
 
-      int pos;
+      size_t pos;
       pos = line.find("Created Account: ");
       if (pos != string::npos) {
         pos += 18 - 1;
         // Ok, find the end '#'
-        int len = line.find('#', pos);
+        size_t len = line.find('#', pos);
         if (len != string::npos) {
           username = line.substr(pos, len - pos - 1);
           ZF_LOGE("New User: %s", (const char *)username.c_str());
@@ -204,7 +204,7 @@ void scan_mystic_log(void) {
       pos = line.find(" logged in");
       if (pos != string::npos) {
         --pos;
-        int len = line.rfind(' ', pos);
+        size_t len = line.rfind(' ', pos);
         if (len != string::npos) {
           len++;
           username = line.substr(len, pos + 1 - len);
@@ -417,7 +417,6 @@ int main(int argc, char *argv[]) {
   else {
     struct termios tios, orig1;
     struct timeval timeout;
-    time_t last_event = 0; // time(NULL);
     time_t last_logscan = time(NULL);
 
     ZF_LOGD("starting");
@@ -557,7 +556,7 @@ int main(int argc, char *argv[]) {
 
           if (zmodem) {
             // Ok, we're zmodem mode -- is it time to exit?
-            int zend = buffer.find("\x1b[0m");
+            size_t zend = buffer.find("\x1b[0m");
             if (zend != string::npos)
               zmodem = 0;
             zend = buffer.find("\x1b[1;1H");
@@ -565,8 +564,8 @@ int main(int argc, char *argv[]) {
               zmodem = 0;
           } else {
             // Should we be in zmodem mode?
-            int zstart = buffer.find("**\x18"
-                                     "B0");
+            size_t zstart = buffer.find("**\x18"
+                                        "B0");
             if (zstart != string::npos)
               zmodem = 1;
           }
@@ -583,7 +582,7 @@ int main(int argc, char *argv[]) {
             // size += total;
             // ZF_LOGV_MEM(buffer, size, "Buffer now:");
 
-            int pos = buffer.rfind("\r\n");
+            size_t pos = buffer.rfind("\r\n");
             // rstrnstr(buffer, size, "\r\n");
             //  >= 0) {
             if (pos != string::npos) {

+ 0 - 1
images.cpp

@@ -9,7 +9,6 @@ static IConv converter("UTF-8", "CP437");
 void display_line(const char *line) {
   char input[1024];
   char output[1024];
-  int len;
 
   strcpy(input, line);
   converter.convert(input, output, sizeof(output));

+ 7 - 7
render.cpp

@@ -135,7 +135,7 @@ void write_color(int fd, int color) {
   case 6:
   case 7:
     slen = snprintf(buffer, sizeof(buffer), "\x1b[0;3%dm", MYSTIC[color]);
-    if (slen >= sizeof(buffer)) {
+    if (slen >= (int)sizeof(buffer)) {
       ZF_LOGE("snprintf %d > size %d", slen, (int)sizeof(buffer));
       buffer[0] = 0;
     }
@@ -149,7 +149,7 @@ void write_color(int fd, int color) {
   case 14:
   case 15:
     slen = snprintf(buffer, sizeof(buffer), "\x1b[0;1;3%dm", MYSTIC[color - 8]);
-    if (slen >= sizeof(buffer)) {
+    if (slen >= (int)sizeof(buffer)) {
       ZF_LOGE("snprintf %d > size %d", slen, (int)sizeof(buffer));
       buffer[0] = 0;
     }
@@ -163,7 +163,7 @@ void write_color(int fd, int color) {
   case 22:
   case 23:
     slen = snprintf(buffer, sizeof(buffer), "\x1b[4%dm", MYSTIC[color - 16]);
-    if (slen >= sizeof(buffer)) {
+    if (slen >= (int)sizeof(buffer)) {
       ZF_LOGE("snprintf %d > size %d", slen, (int)sizeof(buffer));
       buffer[0] = 0;
     }
@@ -177,7 +177,7 @@ void write_color(int fd, int color) {
   case 30:
   case 31:
     slen = snprintf(buffer, sizeof(buffer), "\x1b[5;4%dm", MYSTIC[color - 24]);
-    if (slen >= sizeof(buffer)) {
+    if (slen >= (int)sizeof(buffer)) {
       ZF_LOGE("snprintf %d > size %d", slen, (int)sizeof(buffer));
       buffer[0] = 0;
     }
@@ -195,7 +195,7 @@ void send_goto(int fd, int x, int y) {
   int slen;
 
   slen = snprintf(gbuffer, sizeof(gbuffer), "\x1b[%d;%dH", y, x);
-  if (slen >= sizeof(gbuffer)) {
+  if (slen >= (int)sizeof(gbuffer)) {
     ZF_LOGE("snprintf %d > size %d", slen, (int)sizeof(gbuffer));
     gbuffer[0] = 0;
   }
@@ -386,7 +386,7 @@ void process_trigger(int fd, std::string str, size_t &pos) {
     int slen;
     ZF_LOGD("GOTO (%d,%d)", x, y);
     slen = snprintf(buffer, sizeof(buffer), "\x1b[%d;%dH", y, x);
-    if (slen >= sizeof(buffer)) {
+    if (slen >= (int)sizeof(buffer)) {
       ZF_LOGE("snprintf %d > size %d", slen, (int)sizeof(buffer));
       buffer[0] = 0;
     }
@@ -532,7 +532,7 @@ const char *process_trigger(int fd, const char *cp) {
     int slen;
     ZF_LOGD("GOTO (%d,%d)", x, y);
     slen = snprintf(buffer, sizeof(buffer), "\x1b[%d;%dH", y, x);
-    if (slen >= sizeof(buffer)) {
+    if (slen >= (int)sizeof(buffer)) {
       ZF_LOGE("snprintf %d > size %d", slen, (int)sizeof(buffer));
       buffer[0] = 0;
     }

+ 11 - 13
terminal.cpp

@@ -70,14 +70,14 @@ const char *color_restore(struct console_details *cdp) {
   if (cdp->status == 0) {
     slen = snprintf(buffer, sizeof(buffer), "\x1b[0;3%d;4%dm", cdp->fgcolor,
                     cdp->bgcolor);
-    if (slen >= sizeof(buffer)) {
+    if (slen >= (int)sizeof(buffer)) {
       ZF_LOGE("snprintf %d > size %d", slen, (int)sizeof(buffer));
       buffer[0] = 0;
     }
   } else {
     slen = snprintf(buffer, sizeof(buffer), "\x1b[0;%d;3%d;4%dm", cdp->status,
                     cdp->fgcolor, cdp->bgcolor);
-    if (slen >= sizeof(buffer)) {
+    if (slen >= (int)sizeof(buffer)) {
       ZF_LOGE("snprintf %d > size %d", slen, (int)sizeof(buffer));
       buffer[0] = 0;
     }
@@ -86,7 +86,6 @@ const char *color_restore(struct console_details *cdp) {
 }
 
 ANSI_TYPE console_ansi(struct console_details *cdp, const char *ansi) {
-  int understood = 0;
   const char *cp = ansi;
   const char *last = ansi + strlen(ansi) - 1;
   int number, number2;
@@ -119,7 +118,6 @@ ANSI_TYPE console_ansi(struct console_details *cdp, const char *ansi) {
               "console_ansi( %s ): attempt to move above top of screen (%d)",
               repr(ansi), number);
         }
-        understood = 1;
         return CURSOR;
       case 'B':
         // cursor down
@@ -135,7 +133,6 @@ ANSI_TYPE console_ansi(struct console_details *cdp, const char *ansi) {
         };
         cdp->posy += number;
         // check range/"scroll"
-        understood = 1;
         return CURSOR;
 
       case 'C':
@@ -161,7 +158,6 @@ ANSI_TYPE console_ansi(struct console_details *cdp, const char *ansi) {
           // check range/"scroll"
           cdp->posx -= 79;
         }
-        understood = 1;
         return CURSOR;
 
       case 'D':
@@ -189,7 +185,6 @@ ANSI_TYPE console_ansi(struct console_details *cdp, const char *ansi) {
           }
           cdp->posx += 79;
         }
-        understood = 1;
         return CURSOR;
 
       case 'H':
@@ -227,8 +222,6 @@ ANSI_TYPE console_ansi(struct console_details *cdp, const char *ansi) {
         // Our positions start at zero, not one.
         cdp->posx = number - 1;
         cdp->posy = number2 - 1;
-
-        understood = 1;
         return CURSOR;
 
       case 'J':
@@ -244,7 +237,15 @@ ANSI_TYPE console_ansi(struct console_details *cdp, const char *ansi) {
           cdp->posx = 0;
           cdp->posy = 0;
         };
-        understood = 1;
+        return CLEAR;
+
+      case 'K':
+        // clear line
+        if (cp == last) {
+          number = 0;
+        } else {
+          number = atoi(cp);
+        };
         return CLEAR;
 
       case 'm':
@@ -270,7 +271,6 @@ ANSI_TYPE console_ansi(struct console_details *cdp, const char *ansi) {
             }
           }
         }
-        understood = 1;
         return COLOR;
 
       case 't':
@@ -279,13 +279,11 @@ ANSI_TYPE console_ansi(struct console_details *cdp, const char *ansi) {
       case '!':
         // These are ones that I don't care about.
       case 'n': // This is terminal detect -- give me cursor position
-        understood = 1;
         return OTHER;
 
       default:
         // unsure -- possibly not important
         ZF_LOGD("console_ansi( %s ): ???", repr(ansi));
-        understood = 0;
         return OTHER;
       }
     }

+ 21 - 0
test-utils.cpp

@@ -21,6 +21,8 @@ void pcopy(char *pstring, char *str);
 
 */
 
+#define GTEST_COUT std::cerr << "[          ] [ INFO ]"
+
 namespace {
 
 TEST(UtilsRandRange, rangehits_10k) {
@@ -57,6 +59,25 @@ TEST(UtilsRandInt, rangeint_10k) {
   ASSERT_EQ(max, rmax - 1);
 }
 
+TEST(UtilsRandActivate, rand_activate) {
+  int yes, no, r;
+  for (int l = 1; l < 5; l++) {
+    yes = 0;
+    no = 0;
+    int total = 100000;
+
+    for (int x = 0; x < total; x++) {
+      if (random_activate(l))
+        yes++;
+      else
+        no++;
+    }
+    GTEST_COUT << "Total " << total << ", Yes " << yes << std::endl;
+    r = total / 100 * (l + 1);
+    ASSERT_LE(abs(r - yes), 100);
+  }
+}
+
 TEST(UtilsStrNStr, strnstr) {
   // const char *strnstr(const char *source, int len, const char *needle);
   char buffer[20];

+ 7 - 6
utils.cpp

@@ -121,8 +121,8 @@ char *repr(const char *data) {
     // Ok, default to \xHH output.
     memmove(cp + 3, cp, strlen(cp) + 1);
     char buffer[10];
-    int slen;
-    slen = snprintf(buffer, sizeof(buffer), "\\x%02x", (int)c & 0xff);
+    // int slen =
+    snprintf(buffer, sizeof(buffer), "\\x%02x", (int)c & 0xff);
     /*
     if (slen >= sizeof(buffer)) {
       ZF_LOGE("snprintf %d > size %d", slen, (int)sizeof(buffer));
@@ -187,7 +187,8 @@ int rstrnstr(const char *buffer, int len, const char *find) {
  *
  * buffer is a c null terminated string.
  */
-int string_insert(char *buffer, int max_length, int pos, const char *insert) {
+int string_insert(char *buffer, size_t max_length, size_t pos,
+                  const char *insert) {
   /*
   assert(max_length > pos);
   assert(buffer != NULL);
@@ -346,7 +347,7 @@ IConv::~IConv() { iconv_close(ic); }
 
 int IConv::convert(char *input, char *output, size_t outbufsize) {
   size_t inbufsize = strlen(input);
-  size_t orig_size = outbufsize;
+  // size_t orig_size = outbufsize;
   // memset(output, 0, outbufsize);
   // https://www.gnu.org/savannah-checkouts/gnu/libiconv/documentation/libiconv-1.15/iconv.3.html
   int r = iconv(ic, &input, &inbufsize, &output, &outbufsize);
@@ -488,8 +489,8 @@ const char *logrepr(const char *input) {
       // Ok, default to \xHH output.
       memmove(cp + 3, cp, strlen(cp) + 1);
       char buffer[10];
-      int slen;
-      slen = snprintf(buffer, sizeof(buffer), "\\x%02x", (int)c & 0xff);
+      // int slen =
+      snprintf(buffer, sizeof(buffer), "\\x%02x", (int)c & 0xff);
       strncpy(cp, buffer, 4);
       cp += 4;
       continue;

+ 2 - 1
utils.h

@@ -25,7 +25,8 @@ char *repr(const char *data);
 const char *logrepr(const char *input);
 const char *strnstr(const char *source, int len, const char *needle);
 int rstrnstr(const char *buffer, int len, const char *find);
-int string_insert(char *buffer, int max_length, int pos, const char *insert);
+int string_insert(char *buffer, size_t max_length, size_t pos,
+                  const char *insert);
 void pcopy(char *pstring, char *str);
 
 std::string &find_new_text(std::ifstream &infile,

+ 0 - 2
wordplay.cpp

@@ -220,8 +220,6 @@ int mangle(int fd, std::string &buffer) {
   */
 
   int need_render = 0;
-  int mangled = 0;
-  int mangled_chars = 0;
   static std::string work;
   static size_t work_size = 0;