lib.c: Fix some commentary blunders.
[runlisp] / lib.c
diff --git a/lib.c b/lib.c
index 4f93285..b509cea 100644 (file)
--- a/lib.c
+++ b/lib.c
@@ -51,7 +51,7 @@ void set_progname(const char *prog)
   const char *p;
 
   p = strrchr(prog, '/');
-  progname = p ? p + 1 : progname;
+  progname = p ? p + 1 : prog;
 }
 
 /* Report an error or warning in Unix style, given a captured argument
@@ -267,7 +267,7 @@ void argv_ensure(struct argv *av, size_t n)
   if (need <= av->sz) return;
   newsz = av->sz ? 2*av->sz : 8;
   while (newsz < need) newsz *= 2;
-  av->v = xrealloc(av->v - av->o, newsz*sizeof(char *)) + av->o;
+  av->v = xrealloc(av->v - av->o, newsz*sizeof(char *)); av->v += av->o;
   av->sz = newsz;
 }
 
@@ -377,7 +377,7 @@ void argv_prependl(struct argv *av, ...)
 /* Return nonzero if the AN-byte string A is strictly precedes the BN-byte
  * string B in a lexicographic ordering.
  *
- * All comparisons of keys is handled by this function.
+ * All comparison of keys is handled by this function.
  */
 static int str_lt(const char *a, size_t an, const char *b, size_t bn)
 {
@@ -515,7 +515,7 @@ void treap_insert(struct treap *t, const struct treap_path *p,
      *           /   \                       /   \
      *         X       Y                   Y       Z
      *
-     * On the other hand, if we ere planning to hook N as the right subtree
+     * On the other hand, if we were planning to hook N as the right subtree
      * of U, then we do the opposite rotation:
      *
      *             |                           |
@@ -735,7 +735,7 @@ static void check_subtree(struct treap_node *n, unsigned maxwt,
   if (khi) assert(STRCMP(n->k, <, khi));
 
   /* Check the left subtree.  Node weights must be bounded above by our own
-   * weight.  And everykey in the left subtree must be smaller than our
+   * weight.  And every key in the left subtree must be smaller than our
    * current key.  We propagate the lower bound.
    */
   if (n->left) check_subtree(n->left, n->wt, klo, n->k);
@@ -932,7 +932,7 @@ static void set_config_section_parents(struct config *conf,
      * to have, so we can allocate the `parents' vector and fill it in.
      */
     sect->nparents = av.n/2;
-    sect->parents = xmalloc(sect->nparents*sizeof(sect->parents));
+    sect->parents = xmalloc(sect->nparents*sizeof(*sect->parents));
     for (i = 0; i < av.n; i += 2) {
       n = av.v[i + 1] - av.v[i];
       parent = config_find_section_n(conf, 0, av.v[i], n);
@@ -1089,7 +1089,7 @@ struct config_var *config_set_var_n(struct config *conf,
   struct config_var *var =
     config_find_var_n(conf, sect, CF_CREAT, name, namelen);
 
-  if (var->f&~f&CF_OVERRIDE) return;
+  if (var->f&~f&CF_OVERRIDE) return (var);
   free(var->val); var->val = xstrndup(value, valuelen); var->n = valuelen;
   var->f = f;
   return (var);
@@ -1336,8 +1336,9 @@ static void filter_string(const char *p, const char *l,
 
 /* Scan and resolve a `[SECT:]VAR' specifier at P.
  *
- * Return the address of the next character following the specifier.  L is a
- * limit on the region of the buffer that we should process; SB is the
+ * Return the address of the next character following the specifier; and set
+ * *VAR_OUT to point to the variable we found, or null if it's not there.  L
+ * is a limit on the region of the buffer that we should process; SB is the
  * substitution state which provides the home section if none is given
  * explicitly; FILE and LINE are the source location to blame for problems.
  */
@@ -1379,7 +1380,11 @@ static const char *subst(const char *p, const char *l,
   size_t n;
 
   /* It would be best if we could process literal text at high speed.  To
-   * this end,
+   * this end, we have a table, indexed by the low-order bits of F, to tell
+   * us which special characters we need to stop at.  This way, we can use
+   * `strcspn' to skip over literal text and stop at the next character which
+   * needs special handling.  Entries in this table with a null pointer
+   * correspond to impossible flag settings.
    */
   static const char *const delimtab[] = {
 
@@ -1451,7 +1456,7 @@ static const char *subst(const char *p, const char *l,
        * to it.
        */
 
-      /* If there's no next charact3er then we should be upset. */
+      /* If there's no next character then we should be upset. */
       p++; if (p >= l) lose("%s:%u: unfinished `\\' escape", file, line);
 
       if (!(f&SF_SKIP)) {
@@ -1583,13 +1588,13 @@ static const char *subst(const char *p, const char *l,
               * toothpick, so now we need Q + (Q + 1) = 2 Q + 1 toothpicks.
               *
               * Calculate this here rather than at each point toothpicks
-              * needs to be deployed.
+              * need to be deployed.
               */
 
              subqfilt = 2*subqfilt + 1;
 
            else if (t - p == 1 && *p == 'l')
-             /* `u' -- convert to uppercase.
+             /* `l' -- convert to lowercase.
               *
               * If a case conversion is already set, then that will override
               * whatever we do here, so don't bother.