Numerous compiler warnings master
authorAri Johnson <ari@theari.com>
Mon, 7 Oct 2024 16:51:13 +0000 (12:51 -0400)
committerAri Johnson <ari@theari.com>
Mon, 7 Oct 2024 16:51:13 +0000 (12:51 -0400)
23 files changed:
game/txt/changes/0.73p4
src/atr_tab.c
src/bsd.c
src/command.c
src/db.c
src/destroy.c
src/division.c
src/extchat.c
src/funlist.c
src/funmath.c
src/funstr.c
src/game.c
src/help.c
src/ident.c
src/log.c
src/notify.c
src/parse.c
src/pcre.c
src/speech.c
src/sql.c
src/strutil.c
src/utils.c
src/wiz.c

index fc7362d2ac5c02f2daf39727f393e2261be336d1..efc516b150db1cd420b8a959559f237aca0e928d 100644 (file)
@@ -15,3 +15,4 @@ CobraMUSH Version 0.73p4
     * Compiler warning when RPMODE_SYS enabled [AEJ]
     * Recently introduced bug in channel connect/disconnect broadcasts [AEJ]
     * @prog could not use attribute trees from parent objects [AEJ]
+    * Numerous compiler warnings [AEJ]
index dbc9076e43ae9821cb2815dbd247d3408a073e04..b95c280f98e99b33c11f17898e091638c64bb177 100644 (file)
@@ -536,6 +536,7 @@ list_attribs(void)
   int nptrs = 0, i;
 
   ap = (ATTR *) ptab_firstentry(&ptab_attrib);
+  ptrs[0] = "";
   while (ap) {
     ptrs[nptrs++] = AL_NAME(ap);
     ap = (ATTR *) ptab_nextentry(&ptab_attrib);
index 93bbe2679422b15411eea16c79cb9575eacb3be0..735b1f2065ca30b8f52917e87a024651be801a0d 100644 (file)
--- a/src/bsd.c
+++ b/src/bsd.c
@@ -3257,6 +3257,7 @@ do_page_port(dbref player, const char *pc, const char *message)
   switch (*message) {
   case SEMI_POSE_TOKEN:
     gap = "";
+    /* fall through */
   case POSE_TOKEN:
     key = 1;
     break;
index cca892d62e9e29f0c0fb6a33402dd4dea1b02c8b..e7d911a8b272092bc34e88ff92edb37009e88c3c 100644 (file)
@@ -942,6 +942,7 @@ command_parse(dbref player, dbref cause, dbref realcause, char *string, int from
       break;
     }
 #endif /* CHAT_SYSTEM */
+    /* fall through */
   case NUMBER_TOKEN:
     /* parse_force() destructively modifies the command to replace
      * the first space with a '=' if the command is an actual
@@ -1692,6 +1693,7 @@ list_commands(void)
   char *bp;
   int nptrs = 0, i;
   command = (COMMAND_INFO *) ptab_firstentry(&ptab_command);
+  ptrs[0] = "";
   while (command) {
     ptrs[nptrs] = command->name;
     nptrs++;
index 7b38e532e441756225e28a6d219c0fe07456228f..6bfd155b789e89b45aae1ebc0789c7da2de7603a 100644 (file)
--- a/src/db.c
+++ b/src/db.c
@@ -1181,6 +1181,7 @@ putbytes(FILE * f, unsigned char *lbytes, int byte_limit) {
       case '\"':
       case '\\':
         OUTPUT(putc('\\', f));
+        /* fall through */
       default:
         OUTPUT(putc(lbytes[i], f));
     }
index 0c23386b3475488af8ca285190a1bb64c33d9b35..047ac9f98d6df0f99efc11f762ef308d6e45cec0 100644 (file)
@@ -380,6 +380,7 @@ do_destroy(dbref player, char *name, int confirm)
     break;
   case TYPE_DIVISION:
     do_log(LT_WIZ, player, thing, "Division object scheduled for destruction.");
+    /* fall through */
   case TYPE_THING:
     if (!Owns(player, thing)) {
       notify_format(player, T("%s's %s is scheduled to be destroyed."),
index 044e425b2d39b7058cbf9092a7a0d889cb696df7..e4e1517efad79f455ec7716b52b04910579b1aa5 100644 (file)
@@ -657,8 +657,10 @@ powergroup_db_set(dbref executor, dbref player, const char *powergroup,
             switch (ycode) {
             case YES:
               GIVE_DPBIT(player, power->flag_yes);
+              /* fall through */
             case YESLTE:
               GIVE_DPBIT(player, power->flag_lte);
+              /* fall through */
             case YESLT:
               GIVE_DPBIT(player, power->flag_lt);
               break;
@@ -1045,8 +1047,10 @@ rem_pg_from_player(dbref player, POWERGROUP * powergroup)
         switch (ycode) {
         case YES:
           GIVE_DPBIT(player, power->flag_yes);
+          /* fall through */
         case YESLTE:
           GIVE_DPBIT(player, power->flag_lte);
+          /* fall through */
         case YESLT:
           GIVE_DPBIT(player, power->flag_lt);
           break;
@@ -1607,7 +1611,7 @@ create_div(dbref owner, const char *name)
   }
   Parent(obj) = SDIV(owner).object;
   current_state.divisions++;
-  strncpy(buf, object_header(owner, obj), BUFFER_LEN);
+  strncpy(buf, object_header(owner, obj), BUFFER_LEN - 1);
   notify_format(owner, T("Division created: %s  Parent division: %s"),
                 buf, object_header(owner, SDIV(obj).object));
   return obj;
@@ -1798,8 +1802,10 @@ division_empower(dbref exec, dbref target, const char *arg2)
     switch (flag) {
     case YES:
       GIVE_DPBIT(target, power->flag_yes);
+      /* fall through */
     case YESLTE:
       GIVE_DPBIT(target, power->flag_lte);
+      /* fall through */
     case YESLT:
       GIVE_DPBIT(target, power->flag_lt);
       break;
@@ -2022,6 +2028,7 @@ adjust_powers(dbref obj, dbref to)
         switch (plev) {
         case YESLTE:
           GIVE_DPBIT(obj, power->flag_lte);
+          /* fall through */
         case YESLT:
           GIVE_DPBIT(obj, power->flag_lt);
           break;
@@ -2232,8 +2239,10 @@ string_to_dpbits(const char *powers)
       switch (plevel) {
       case 3:
         DPBIT_SET(powc, power->flag_yes);
+        /* fall through */
       case 2:
         DPBIT_SET(powc, power->flag_lte);
+        /* fall through */
       case 1:
         DPBIT_SET(powc, power->flag_lt);
         break;
index 4a6e837596e3b0183e265fe4cdd6ae29fb20daa9..41b8df167f1ae098e30f3e585ca1455b5e8378c0 100644 (file)
@@ -1578,7 +1578,9 @@ do_chat_by_name(dbref player, const char *name, const char *msg, int source)
       list_partial_matches(player, name, PMATCH_ON);
       return 1;
     }
+    /* fall through */
   case CMATCH_EXACT:
+    /* fall through */
   case CMATCH_PARTIAL:
     do_chat(player, c, msg);
     return 1;
index 6101f46bfbd28eda5279db97c7cd7d8df060659b..c71be8adc3fdf0d8cf4676c7c20d7c2c5a65d129 100644 (file)
@@ -441,9 +441,9 @@ FUNCTION(fun_fold)
 
   /* If we have three or more arguments, the third one is the base case */
   if (nargs >= 3) {
-    strncpy(base, args[2], BUFFER_LEN);
+    strncpy(base, args[2], BUFFER_LEN - 1);
   } else {
-    strncpy(base, split_token(&cp, sep), BUFFER_LEN);
+    strncpy(base, split_token(&cp, sep), BUFFER_LEN - 1);
   }
   wenv[0] = base;
   wenv[1] = split_token(&cp, sep);
index 574180a55e862aa0d369c06c763d1d03307d66cf..251d1cd23148caf65412a78b9cd4af62ea4b9c28 100644 (file)
@@ -1925,7 +1925,7 @@ MATH_FUNC(math_div)
     }
     temp = parse_integer(ptr[n]);
 
-    if (EQ(temp, 0)) {
+    if (EQ(temp, 0.0)) {
       safe_str(T("#-1 DIVISION BY ZERO"), buff, bp);
       return;
     }
index 00af11bfaf63a3ebb0c5b05138836dbfea8b3821..e34db221989cf0e996db76c9a4f768dda56b5dcb 100644 (file)
@@ -211,6 +211,7 @@ FUNCTION(fun_poss)
     safe_str(T(e_match), buff, bp);
     return;
   }
+  /* fall through */
   safe_str(poss[get_gender(thing)], buff, bp);
 }
 
@@ -2211,6 +2212,7 @@ FUNCTION(fun_speak)
   case '"':
     if (CHAT_STRIP_QUOTE)
       string++;
+    /* fall through */
   default:
     say = 1;
     break;
index 55c06cd19978e30453eb9415ebb74594bdc08cb8..ba30f539268fecccb96498f856de6df0524f0cd9 100644 (file)
@@ -1925,7 +1925,7 @@ do_dolist(dbref player, char *list, char *command, dbref cause,
   char outbuf[BUFFER_LEN];
   char *bp;
   int place;
-  char placestr[10];
+  char placestr[12];
   int j;
   char delim = ' ';
   if (!command || !*command) {
@@ -1966,7 +1966,7 @@ do_dolist(dbref player, char *list, char *command, dbref cause,
   while (objstring) {
     curr = split_token(&objstring, delim);
     place++;
-    sprintf(placestr, "%d", place);
+    snprintf(placestr, 11, "%d", place);
     if (!(flags & DOL_MAP)) {
       /* @dolist, queue command */
       bind_and_queue(player, cause, command, curr, placestr);
index b7788be52463f51d95b25ec98f2a0e0add1c3b53..d0bafa993b86e931a29c01b1e3cc56242fcaa90f 100644 (file)
@@ -102,7 +102,7 @@ add_help_file(const char *command_name, const char *filename, int admin)
   char newfilename[256] = "\0";
 
   /* Must use a buffer for MacOS file path conversion */
-  strncpy(newfilename, filename, 256);
+  strncpy(newfilename, filename, 256 - 1);
 
   if (help_init == 0)
     init_help_files();
index 21be8badf080cc050cab50ada53d68544142a94e..ec854de7673a28bf3dde02e9bb144f0c8b9edf69 100644 (file)
@@ -333,7 +333,7 @@ id_query(ident_t * id, struct sockaddr *laddr, socklen_t llen,
   sprintf(buf, "%s , ", port);
   getnameinfo(faddr, flen, NULL, 0, port, sizeof(port),
              NI_NUMERICHOST | NI_NUMERICSERV);
-  strncat(buf, port, sizeof(buf));
+  strncat(buf, port, sizeof(buf) - 1);
   strncat(buf, "\r\n", sizeof(buf) - 1);
 
   if (timeout) {
index 06afea1b0327790e1acf50366884f02a22f9f52b..6aaeb9ef6e91652a5d90eab7b105eb445e9741fd 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -96,7 +96,7 @@ start_log(FILE ** fp, const char *filename)
     } else {
 
       /* Must use a buffer for MacOS file path conversion */
-      strncpy(newfilename, filename, 256);
+      strncpy(newfilename, filename, 255);
 
       *fp = fopen(newfilename, "a");
       if (*fp == NULL) {
index 387dab0d8981d201cba4f6c674bb9dc6df34cdad..2882966885b6b5d3306360e320704247ed50c7a9 100644 (file)
@@ -370,7 +370,9 @@ notify_makestring(const char *message, struct notify_strings messages[],
     return messages[type].message;
   case NA_NPASCII:
     strip = 1;
+    /* fall through */
   case NA_PASCII:
+    /* fall through */
   case NA_TPASCII:
     /* PLAYER Ascii. Different output. \n is \r\n */
     if (type == NA_NPASCII)
index df5be49dc28d6510d1aaba1ab90e315b7ec21415..eea49081a2e81bd8f9925178fb9bf82e17df9ae5 100644 (file)
@@ -685,7 +685,7 @@ process_expression(char *buff, char **bp, char const **str,
          if (*str)
            (*str)++;
          if (is_strict_integer(subspace))
-           p = abs(parse_integer(subspace));
+           p = labs(parse_integer(subspace));
          else
            named_substring = subspace;
        } else {
index 5c24c2102804035553de0be4b925485d052826b9..3a250e0de4ce45158c88473ddfbcdcf20655b0a3 100644 (file)
@@ -1687,9 +1687,13 @@ the pcre module can use all the optimization it can get). */
        case OP_EXACT:          /* Fall through */
          tcode += 2;
 
+          /* fall through */
        case OP_CHAR:
+          /* fall through */
        case OP_CHARNC:
+          /* fall through */
        case OP_PLUS:
+          /* fall through */
        case OP_MINPLUS:
          set_bit(start_bits, tcode[1], caseless, cd);
          try_next = FALSE;
@@ -2385,6 +2389,7 @@ Otherwise further processing may be required. */
       /* \0 always starts an octal number, but we may drop through to here with a
          larger first octal digit. */
 
+      /* fall through */
     case '0':
       c -= '0';
       while (i++ < 2 && ptr[1] >= '0' && ptr[1] <= '7')
@@ -5376,9 +5381,13 @@ find_firstassertedchar(const uschar * code, int *options, BOOL inassert)
     case OP_EXACT:             /* Fall through */
       scode += 2;
 
+      /* fall through */
     case OP_CHAR:
+      /* fall through */
     case OP_CHARNC:
+      /* fall through */
     case OP_PLUS:
+      /* fall through */
     case OP_MINPLUS:
       if (!inassert)
        return -1;
@@ -5912,15 +5921,25 @@ pattern. We can't be so clever for #-comments. */
        case 'R':
          ptr++;
 
+          /* fall through */
        case '0':
+          /* fall through */
        case '1':
+          /* fall through */
        case '2':
+          /* fall through */
        case '3':
+          /* fall through */
        case '4':
+          /* fall through */
        case '5':
+          /* fall through */
        case '6':
+          /* fall through */
        case '7':
+          /* fall through */
        case '8':
+          /* fall through */
        case '9':
          ptr += 2;
          if (c != 'R')
@@ -8647,6 +8666,7 @@ this stack. */
            }
            /* For DOTALL case, fall through and treat as \C */
 
+            /* fall through */
          case OP_ANYBYTE:
            c = max - min;
            if (c > md->end_subject - eptr)
index 713f95094d142f0d6f01e48d122c4bff796567d0..8965b19813517bc64478c06d3b5a0b7038b967a7 100644 (file)
@@ -323,6 +323,7 @@ do_whisper(dbref player, const char *arg1, const char *arg2, int noisy)
   switch (*arg2) {
   case SEMI_POSE_TOKEN:
     gap = "";
+    /* fall through */
   case POSE_TOKEN:
     key = 1;
     arg2++;
@@ -581,6 +582,7 @@ do_wall(dbref player, const char *message, enum wall_type target, int emit)
       break;
     case SEMI_POSE_TOKEN:
       gap = "";
+      /* fall through */
     case POSE_TOKEN:
       pose = 1;
       message++;
@@ -825,6 +827,7 @@ do_page(dbref player, const char *arg1, const char *arg2, dbref cause,
   switch (*message) {
   case SEMI_POSE_TOKEN:
     gap = "";
+    /* fall through */
   case POSE_TOKEN:
     key = 1;
     message++;
index 7ee1a611059ce29b292aaf28f09ac6212ee8dfa1..4e989db81e19332b6e277de18552b4f6887d75ee 100644 (file)
--- a/src/sql.c
+++ b/src/sql.c
@@ -229,7 +229,7 @@ FUNCTION(fun_mapsql)
 
   if (do_fieldnames) {
     fields = mysql_fetch_fields(qres);
-    strncpy(numbuff, unparse_integer(0), 20);
+    strncpy(numbuff, unparse_integer(0), 19);
     wenv[0] = numbuff;
     for (i = 0; i < numfields && i < 9; i++) {
       wenv[i + 1] = fields[i].name;
@@ -245,7 +245,7 @@ FUNCTION(fun_mapsql)
     if (rownum++ > 0 || do_fieldnames) {
       safe_str(osep, buff, bp);
     }
-    strncpy(numbuff, unparse_integer(rownum), 20);
+    strncpy(numbuff, unparse_integer(rownum), 19);
     wenv[0] = numbuff;
     for (i = 0; (i < numfields) && (i < 9); i++) {
        wenv[i + 1] = row_p[i];
index c177da5d84bf323380bd30ccc70728074118a4f7..758fb3c80bf8129b6cec0244b49835b20dc025e7 100644 (file)
@@ -1357,18 +1357,25 @@ format_long(long val, char *buff, char **bp, int maxlen, int base)
     case 0:
       while (current < stack + sizeof(stack)) {
        *((*bp)++) = *(current++);
+        /* fall through */
     case 7:
        *((*bp)++) = *(current++);
+        /* fall through */
     case 6:
        *((*bp)++) = *(current++);
+        /* fall through */
     case 5:
        *((*bp)++) = *(current++);
+        /* fall through */
     case 4:
        *((*bp)++) = *(current++);
+        /* fall through */
     case 3:
        *((*bp)++) = *(current++);
+        /* fall through */
     case 2:
        *((*bp)++) = *(current++);
+        /* fall through */
     case 1:
        *((*bp)++) = *(current++);
       }
index f91f5dd3f6e8434e91c2bd1f39f96aa09772968e..d3359e76be90ce94ea9cf3275796978acc6f81fa 100644 (file)
@@ -221,7 +221,7 @@ fetch_ufun_attrib(char *attrname, dbref executor, ufun_attrib * ufun,
     pe_flags |= PE_DEBUG;
     
   /* Populate the ufun object */
-  strncpy(ufun->contents, atr_value(attrib), BUFFER_LEN);
+  strncpy(ufun->contents, atr_value(attrib), BUFFER_LEN - 1);
   ufun->thing = thing;
   ufun->pe_flags = pe_flags;
   
index 5ea21fcf480b07135760d57c7eb2a3d6c34b1a2b..c2574f33c9724d32d7dfbc8600d05dd41e9474be 100644 (file)
--- a/src/wiz.c
+++ b/src/wiz.c
@@ -1074,6 +1074,7 @@ do_debug_examine(dbref player, const char *name)
     mp = desc_mail(thing);
     notify_format(player, T("First mail sender: %d"), mp ? mp->from : NOTHING);
 #endif
+    /* fall through */
   case TYPE_THING:
     notify_format(player, "Location: %d", Location(thing));
     notify_format(player, "Home: %d", Home(thing));