]> git.cameronkatri.com Git - mandoc.git/commitdiff
Replacement of `Lb' in mdoc_action.c.
authorKristaps Dzonsons <kristaps@bsd.lv>
Sun, 12 Jul 2009 20:50:08 +0000 (20:50 +0000)
committerKristaps Dzonsons <kristaps@bsd.lv>
Sun, 12 Jul 2009 20:50:08 +0000 (20:50 +0000)
Added warning against bogus `Lb' (like groff does).
Added proper quotes around `Lb' in mdoc_term.c.
Moved mdoc_a2lib -> libmdoc (where it belongs).

libmdoc.h
mdoc.c
mdoc.h
mdoc_action.c
mdoc_term.c
mdoc_validate.c

index 1e3cbb3ce3f7e85b77ca1333e85f14d00891a7bc..c6633890f72b36108d2af5a84661f9bee4936d35 100644 (file)
--- a/libmdoc.h
+++ b/libmdoc.h
@@ -1,4 +1,4 @@
-/*     $Id: libmdoc.h,v 1.17 2009/07/12 20:30:35 kristaps Exp $ */
+/*     $Id: libmdoc.h,v 1.18 2009/07/12 20:50:08 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -97,6 +97,7 @@ enum  merr {
        EQUOTPHR,
        ENOCTX,
        ESPACE,
+       ELIB,
        MERRMAX
 };
 
@@ -154,6 +155,7 @@ time_t                mdoc_atotime(const char *);
 
 size_t           mdoc_macro2len(int);
 const char      *mdoc_a2att(const char *);
+const char      *mdoc_a2lib(const char *);
 const char      *mdoc_a2st(const char *);
 const char      *mdoc_a2arch(const char *);
 const char      *mdoc_a2vol(const char *);
diff --git a/mdoc.c b/mdoc.c
index 45ed32eacc1c6c09132e18a1c00895b20d993b97..113a4df61a78b002f53db9755324dd04536cc51c 100644 (file)
--- a/mdoc.c
+++ b/mdoc.c
@@ -1,4 +1,4 @@
-/*     $Id: mdoc.c,v 1.89 2009/07/07 09:29:15 kristaps Exp $ */
+/*     $Id: mdoc.c,v 1.90 2009/07/12 20:50:08 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -79,6 +79,7 @@ const char *const __mdoc_merrnames[MERRMAX] = {
        "unterminated quoted phrase", /* EQUOTPHR */
        "closure macro without prior context", /* ENOCTX */
        "invalid whitespace after control character", /* ESPACE */
+       "no description found for library" /* ELIB */
 };
 
 const  char *const __mdoc_macronames[MDOC_MAX] = {              
diff --git a/mdoc.h b/mdoc.h
index 1f8665094e17508f37f965da9714e410bc9b6341..578e1f86acd8d9e9a761989bb5b9b30bbf076b70 100644 (file)
--- a/mdoc.h
+++ b/mdoc.h
@@ -1,4 +1,4 @@
-/*     $Id: mdoc.h,v 1.64 2009/07/12 20:30:35 kristaps Exp $ */
+/*     $Id: mdoc.h,v 1.65 2009/07/12 20:50:08 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -295,8 +295,6 @@ const struct mdoc_node *mdoc_node(const struct mdoc *);
 const struct mdoc_meta *mdoc_meta(const struct mdoc *);
 int              mdoc_endparse(struct mdoc *);
 
-const char      *mdoc_a2lib(const char *);
-
 __END_DECLS
 
 #endif /*!MDOC_H*/
index 30a758528667e6d9214b9b44d695c7d57acaca8b..dcb938e5f04ce08f1d0410961579b88d7343fefc 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mdoc_action.c,v 1.26 2009/07/12 20:30:35 kristaps Exp $ */
+/*     $Id: mdoc_action.c,v 1.27 2009/07/12 20:50:08 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -41,6 +41,7 @@ static        int       post_bl_width(POST_ARGS);
 static int       post_dd(POST_ARGS);
 static int       post_display(POST_ARGS);
 static int       post_dt(POST_ARGS);
+static int       post_lb(POST_ARGS);
 static int       post_lk(POST_ARGS);
 static int       post_nm(POST_ARGS);
 static int       post_os(POST_ARGS);
@@ -159,7 +160,7 @@ const       struct actions mdoc_actions[MDOC_MAX] = {
        { NULL, NULL }, /* Hf */
        { NULL, NULL }, /* Fr */
        { NULL, NULL }, /* Ud */
-       { NULL, NULL }, /* Lb */
+       { NULL, post_lb }, /* Lb */
        { NULL, NULL }, /* Lp */
        { NULL, post_lk }, /* Lk */
        { NULL, NULL }, /* Mt */
@@ -290,6 +291,36 @@ post_nm(POST_ARGS)
 }
 
 
+static int
+post_lb(POST_ARGS)
+{
+       const char      *p;
+       char            *buf;
+       size_t           sz;
+
+       assert(MDOC_TEXT == m->last->child->type);
+       p = mdoc_a2lib(m->last->child->string);
+       if (NULL == p) {
+               sz = strlen(m->last->child->string) +
+                       2 + strlen("\\(lqlibrary\\(rq");
+               buf = malloc(sz);
+               if (NULL == buf)
+                       return(mdoc_nerr(m, m->last, EMALLOC));
+               (void)snprintf(buf, sz, "library \\(lq%s\\(rq", 
+                               m->last->child->string);
+               free(m->last->child->string);
+               m->last->child->string = buf;
+               return(1);
+       }
+
+       free(m->last->child->string);
+       m->last->child->string = strdup(p);
+       if (NULL == m->last->child->string)
+               return(mdoc_nerr(m, m->last, EMALLOC));
+       return(1);
+}
+
+
 static int
 post_st(POST_ARGS)
 {
index 122e353470f43cd5637f53e3998c44425bf3c243..208dc94c4a12b04b60149a2b8b0454db20cb11eb 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mdoc_term.c,v 1.36 2009/07/12 20:30:35 kristaps Exp $ */
+/*     $Id: mdoc_term.c,v 1.37 2009/07/12 20:50:08 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -147,7 +147,6 @@ static      int       termp_ft_pre(DECL_ARGS);
 static int       termp_ic_pre(DECL_ARGS);
 static int       termp_in_pre(DECL_ARGS);
 static int       termp_it_pre(DECL_ARGS);
-static int       termp_lb_pre(DECL_ARGS);
 static int       termp_lk_pre(DECL_ARGS);
 static int       termp_ms_pre(DECL_ARGS);
 static int       termp_mt_pre(DECL_ARGS);
@@ -281,7 +280,7 @@ static const struct termact termacts[MDOC_MAX] = {
        { NULL, NULL }, /* Hf */
        { NULL, NULL }, /* Fr */
        { termp_ud_pre, NULL }, /* Ud */
-       { termp_lb_pre, termp_lb_post }, /* Lb */
+       { NULL, termp_lb_post }, /* Lb */
        { termp_pp_pre, NULL }, /* Lp */ 
        { termp_lk_pre, NULL }, /* Lk */ 
        { termp_mt_pre, NULL }, /* Mt */ 
@@ -1283,23 +1282,6 @@ termp_bt_pre(DECL_ARGS)
 }
 
 
-/* ARGSUSED */
-static int
-termp_lb_pre(DECL_ARGS)
-{
-       const char      *lb;
-
-       assert(node->child && MDOC_TEXT == node->child->type);
-       lb = mdoc_a2lib(node->child->string);
-       if (lb) {
-               term_word(p, lb);
-               return(0);
-       }
-       term_word(p, "library");
-       return(1);
-}
-
-
 /* ARGSUSED */
 static void
 termp_lb_post(DECL_ARGS)
index 1c5d8c9fe7a9f31040c59ba938de5568ccadb1cd..24253d056322e6917fb3f7859053bcae61826734 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mdoc_validate.c,v 1.30 2009/07/12 20:30:35 kristaps Exp $ */
+/*     $Id: mdoc_validate.c,v 1.31 2009/07/12 20:50:08 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -90,6 +90,7 @@ static        int     berr_ge1(POST_ARGS);
 static int     hwarn_eq1(POST_ARGS);
 static int     ewarn_ge1(POST_ARGS);
 static int     ebool(POST_ARGS);
+
 static int     post_an(POST_ARGS);
 static int     post_args(POST_ARGS);
 static int     post_at(POST_ARGS);
@@ -97,6 +98,7 @@ static        int     post_bf(POST_ARGS);
 static int     post_bl(POST_ARGS);
 static int     post_bl_head(POST_ARGS);
 static int     post_it(POST_ARGS);
+static int     post_lb(POST_ARGS);
 static int     post_nm(POST_ARGS);
 static int     post_root(POST_ARGS);
 static int     post_sh(POST_ARGS);
@@ -133,7 +135,7 @@ static      v_post  posts_in[] = { eerr_eq1, NULL };
 static v_post  posts_ss[] = { herr_ge1, NULL };
 static v_post  posts_nd[] = { berr_ge1, NULL };
 static v_post  posts_pf[] = { eerr_eq1, NULL };
-static v_post  posts_lb[] = { eerr_eq1, NULL };
+static v_post  posts_lb[] = { eerr_eq1, post_lb, NULL };
 static v_post  posts_st[] = { eerr_eq1, post_st, NULL };
 static v_post  posts_pp[] = { ewarn_eq0, NULL };
 static v_post  posts_ex[] = { eerr_eq0, post_args, NULL };
@@ -874,6 +876,16 @@ post_bf(POST_ARGS)
 }
 
 
+static int
+post_lb(POST_ARGS)
+{
+
+       if (mdoc_a2lib(mdoc->last->child->string))
+               return(1);
+       return(mdoc_nwarn(mdoc, mdoc->last, ELIB));
+}
+
+
 static int
 post_nm(POST_ARGS)
 {