source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* mdocml: Renamed mandoc.c to libmandoc.c.
@ 2010-07-05 20:00 kristaps
  0 siblings, 0 replies; only message in thread
From: kristaps @ 2010-07-05 20:00 UTC (permalink / raw)
  To: source

Log Message:
-----------
Renamed mandoc.c to libmandoc.c.  This is in the efforts of getting a
cleaner namespace for functions across the entire system (mandoc.h:
getting parsed-string values, or declarations necessary for the AST
data), and compiler functions (libmandoc.h: back-end functions and
declarations).

Modified Files:
--------------
    mdocml:
        Makefile

Added Files:
-----------
    mdocml:
        libmandoc.c

Removed Files:
-------------
    mdocml:
        mandoc.c

Revision Data
-------------
--- mandoc.c
+++ /dev/null
@@ -1,396 +0,0 @@
-/*	$Id: mandoc.c,v 1.19 2010/06/19 20:46:28 kristaps Exp $ */
-/*
- * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@bsd.lv>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <sys/types.h>
-
-#include <assert.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <time.h>
-
-#include "mandoc.h"
-#include "libmandoc.h"
-
-static	int	 a2time(time_t *, const char *, const char *);
-static	int	 spec_norm(char *, int);
-
-
-/*
- * "Normalise" a special string by converting its ASCII_HYPH entries
- * into actual hyphens.
- */
-static int
-spec_norm(char *p, int sz)
-{
-	int		 i;
-
-	for (i = 0; i < sz; i++)
-		if (ASCII_HYPH == p[i])
-			p[i] = '-';
-
-	return(sz);
-}
-
-
-int
-mandoc_special(char *p)
-{
-	int		 terminator;	/* Terminator for \s. */
-	int		 lim;		/* Limit for N in \s. */
-	int		 c, i;
-	char		*sv;
-	
-	sv = p;
-
-	if ('\\' != *p++)
-		return(spec_norm(sv, 0));
-
-	switch (*p) {
-	case ('\''):
-		/* FALLTHROUGH */
-	case ('`'):
-		/* FALLTHROUGH */
-	case ('q'):
-		/* FALLTHROUGH */
-	case (ASCII_HYPH):
-		/* FALLTHROUGH */
-	case ('-'):
-		/* FALLTHROUGH */
-	case ('~'):
-		/* FALLTHROUGH */
-	case ('^'):
-		/* FALLTHROUGH */
-	case ('%'):
-		/* FALLTHROUGH */
-	case ('0'):
-		/* FALLTHROUGH */
-	case (' '):
-		/* FALLTHROUGH */
-	case ('}'):
-		/* FALLTHROUGH */
-	case ('|'):
-		/* FALLTHROUGH */
-	case ('&'):
-		/* FALLTHROUGH */
-	case ('.'):
-		/* FALLTHROUGH */
-	case (':'):
-		/* FALLTHROUGH */
-	case ('c'):
-		/* FALLTHROUGH */
-	case ('e'):
-		return(spec_norm(sv, 2));
-	case ('s'):
-		if ('\0' == *++p)
-			return(spec_norm(sv, 2));
-
-		c = 2;
-		terminator = 0;
-		lim = 1;
-
-		if (*p == '\'') {
-			lim = 0;
-			terminator = 1;
-			++p;
-			++c;
-		} else if (*p == '[') {
-			lim = 0;
-			terminator = 2;
-			++p;
-			++c;
-		} else if (*p == '(') {
-			lim = 2;
-			terminator = 3;
-			++p;
-			++c;
-		}
-
-		if (*p == '+' || *p == '-') {
-			++p;
-			++c;
-		}
-
-		if (*p == '\'') {
-			if (terminator)
-				return(spec_norm(sv, 0));
-			lim = 0;
-			terminator = 1;
-			++p;
-			++c;
-		} else if (*p == '[') {
-			if (terminator)
-				return(spec_norm(sv, 0));
-			lim = 0;
-			terminator = 2;
-			++p;
-			++c;
-		} else if (*p == '(') {
-			if (terminator)
-				return(spec_norm(sv, 0));
-			lim = 2;
-			terminator = 3;
-			++p;
-			++c;
-		}
-
-		/* TODO: needs to handle floating point. */
-
-		if ( ! isdigit((u_char)*p))
-			return(spec_norm(sv, 0));
-
-		for (i = 0; isdigit((u_char)*p); i++) {
-			if (lim && i >= lim)
-				break;
-			++p;
-			++c;
-		}
-
-		if (terminator && terminator < 3) {
-			if (1 == terminator && *p != '\'')
-				return(spec_norm(sv, 0));
-			if (2 == terminator && *p != ']')
-				return(spec_norm(sv, 0));
-			++p;
-			++c;
-		}
-
-		return(spec_norm(sv, c));
-	case ('f'):
-		/* FALLTHROUGH */
-	case ('F'):
-		/* FALLTHROUGH */
-	case ('*'):
-		if ('\0' == *++p || isspace((u_char)*p))
-			return(spec_norm(sv, 0));
-		switch (*p) {
-		case ('('):
-			if ('\0' == *++p || isspace((u_char)*p))
-				return(spec_norm(sv, 0));
-			return(spec_norm(sv, 4));
-		case ('['):
-			for (c = 3, p++; *p && ']' != *p; p++, c++)
-				if (isspace((u_char)*p))
-					break;
-			return(spec_norm(sv, *p == ']' ? c : 0));
-		default:
-			break;
-		}
-		return(spec_norm(sv, 3));
-	case ('('):
-		if ('\0' == *++p || isspace((u_char)*p))
-			return(spec_norm(sv, 0));
-		if ('\0' == *++p || isspace((u_char)*p))
-			return(spec_norm(sv, 0));
-		return(spec_norm(sv, 4));
-	case ('['):
-		break;
-	default:
-		return(spec_norm(sv, 0));
-	}
-
-	for (c = 3, p++; *p && ']' != *p; p++, c++)
-		if (isspace((u_char)*p))
-			break;
-
-	return(spec_norm(sv, *p == ']' ? c : 0));
-}
-
-
-void *
-mandoc_calloc(size_t num, size_t size)
-{
-	void		*ptr;
-
-	ptr = calloc(num, size);
-	if (NULL == ptr) {
-		perror(NULL);
-		exit(EXIT_FAILURE);
-	}
-
-	return(ptr);
-}
-
-
-void *
-mandoc_malloc(size_t size)
-{
-	void		*ptr;
-
-	ptr = malloc(size);
-	if (NULL == ptr) {
-		perror(NULL);
-		exit(EXIT_FAILURE);
-	}
-
-	return(ptr);
-}
-
-
-void *
-mandoc_realloc(void *ptr, size_t size)
-{
-
-	ptr = realloc(ptr, size);
-	if (NULL == ptr) {
-		perror(NULL);
-		exit(EXIT_FAILURE);
-	}
-
-	return(ptr);
-}
-
-
-char *
-mandoc_strdup(const char *ptr)
-{
-	char		*p;
-
-	p = strdup(ptr);
-	if (NULL == p) {
-		perror(NULL);
-		exit(EXIT_FAILURE);
-	}
-
-	return(p);
-}
-
-
-static int
-a2time(time_t *t, const char *fmt, const char *p)
-{
-	struct tm	 tm;
-	char		*pp;
-
-	memset(&tm, 0, sizeof(struct tm));
-
-	pp = strptime(p, fmt, &tm);
-	if (NULL != pp && '\0' == *pp) {
-		*t = mktime(&tm);
-		return(1);
-	}
-
-	return(0);
-}
-
-
-/*
- * Convert from a manual date string (see mdoc(7) and man(7)) into a
- * date according to the stipulated date type.
- */
-time_t
-mandoc_a2time(int flags, const char *p)
-{
-	time_t		 t;
-
-	if (MTIME_MDOCDATE & flags) {
-		if (0 == strcmp(p, "$" "Mdocdate$"))
-			return(time(NULL));
-		if (a2time(&t, "$" "Mdocdate: %b %d %Y $", p))
-			return(t);
-	}
-
-	if (MTIME_CANONICAL & flags || MTIME_REDUCED & flags) 
-		if (a2time(&t, "%b %d, %Y", p))
-			return(t);
-
-	if (MTIME_ISO_8601 & flags) 
-		if (a2time(&t, "%Y-%m-%d", p))
-			return(t);
-
-	if (MTIME_REDUCED & flags) {
-		if (a2time(&t, "%d, %Y", p))
-			return(t);
-		if (a2time(&t, "%Y", p))
-			return(t);
-	}
-
-	return(0);
-}
-
-
-int
-mandoc_eos(const char *p, size_t sz)
-{
-
-	if (0 == sz)
-		return(0);
-
-	/*
-	 * End-of-sentence recognition must include situations where
-	 * some symbols, such as `)', allow prior EOS punctuation to
-	 * propogate outward.
-	 */
-
-	for ( ; sz; sz--) {
-		switch (p[(int)sz - 1]) {
-		case ('\"'):
-			/* FALLTHROUGH */
-		case ('\''):
-			/* FALLTHROUGH */
-		case (']'):
-			/* FALLTHROUGH */
-		case (')'):
-			break;
-		case ('.'):
-			/* Escaped periods. */
-			if (sz > 1 && '\\' == p[(int)sz - 2])
-				return(0);
-			/* FALLTHROUGH */
-		case ('!'):
-			/* FALLTHROUGH */
-		case ('?'):
-			return(1);
-		default:
-			return(0);
-		}
-	}
-
-	return(0);
-}
-
-
-int
-mandoc_hyph(const char *start, const char *c)
-{
-
-	/*
-	 * Choose whether to break at a hyphenated character.  We only
-	 * do this if it's free-standing within a word.
-	 */
-
-	/* Skip first/last character of buffer. */
-	if (c == start || '\0' == *(c + 1))
-		return(0);
-	/* Skip first/last character of word. */
-	if ('\t' == *(c + 1) || '\t' == *(c - 1))
-		return(0);
-	if (' ' == *(c + 1) || ' ' == *(c - 1))
-		return(0);
-	/* Skip double invocations. */
-	if ('-' == *(c + 1) || '-' == *(c - 1))
-		return(0);
-	/* Skip escapes. */
-	if ('\\' == *(c - 1))
-		return(0);
-
-	return(1);
-}
--- /dev/null
+++ libmandoc.c
@@ -0,0 +1,396 @@
+/*	$Id: libmandoc.c,v 1.1 2010/07/05 20:00:55 kristaps Exp $ */
+/*
+ * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@bsd.lv>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <sys/types.h>
+
+#include <assert.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <time.h>
+
+#include "mandoc.h"
+#include "libmandoc.h"
+
+static	int	 a2time(time_t *, const char *, const char *);
+static	int	 spec_norm(char *, int);
+
+
+/*
+ * "Normalise" a special string by converting its ASCII_HYPH entries
+ * into actual hyphens.
+ */
+static int
+spec_norm(char *p, int sz)
+{
+	int		 i;
+
+	for (i = 0; i < sz; i++)
+		if (ASCII_HYPH == p[i])
+			p[i] = '-';
+
+	return(sz);
+}
+
+
+int
+mandoc_special(char *p)
+{
+	int		 terminator;	/* Terminator for \s. */
+	int		 lim;		/* Limit for N in \s. */
+	int		 c, i;
+	char		*sv;
+	
+	sv = p;
+
+	if ('\\' != *p++)
+		return(spec_norm(sv, 0));
+
+	switch (*p) {
+	case ('\''):
+		/* FALLTHROUGH */
+	case ('`'):
+		/* FALLTHROUGH */
+	case ('q'):
+		/* FALLTHROUGH */
+	case (ASCII_HYPH):
+		/* FALLTHROUGH */
+	case ('-'):
+		/* FALLTHROUGH */
+	case ('~'):
+		/* FALLTHROUGH */
+	case ('^'):
+		/* FALLTHROUGH */
+	case ('%'):
+		/* FALLTHROUGH */
+	case ('0'):
+		/* FALLTHROUGH */
+	case (' '):
+		/* FALLTHROUGH */
+	case ('}'):
+		/* FALLTHROUGH */
+	case ('|'):
+		/* FALLTHROUGH */
+	case ('&'):
+		/* FALLTHROUGH */
+	case ('.'):
+		/* FALLTHROUGH */
+	case (':'):
+		/* FALLTHROUGH */
+	case ('c'):
+		/* FALLTHROUGH */
+	case ('e'):
+		return(spec_norm(sv, 2));
+	case ('s'):
+		if ('\0' == *++p)
+			return(spec_norm(sv, 2));
+
+		c = 2;
+		terminator = 0;
+		lim = 1;
+
+		if (*p == '\'') {
+			lim = 0;
+			terminator = 1;
+			++p;
+			++c;
+		} else if (*p == '[') {
+			lim = 0;
+			terminator = 2;
+			++p;
+			++c;
+		} else if (*p == '(') {
+			lim = 2;
+			terminator = 3;
+			++p;
+			++c;
+		}
+
+		if (*p == '+' || *p == '-') {
+			++p;
+			++c;
+		}
+
+		if (*p == '\'') {
+			if (terminator)
+				return(spec_norm(sv, 0));
+			lim = 0;
+			terminator = 1;
+			++p;
+			++c;
+		} else if (*p == '[') {
+			if (terminator)
+				return(spec_norm(sv, 0));
+			lim = 0;
+			terminator = 2;
+			++p;
+			++c;
+		} else if (*p == '(') {
+			if (terminator)
+				return(spec_norm(sv, 0));
+			lim = 2;
+			terminator = 3;
+			++p;
+			++c;
+		}
+
+		/* TODO: needs to handle floating point. */
+
+		if ( ! isdigit((u_char)*p))
+			return(spec_norm(sv, 0));
+
+		for (i = 0; isdigit((u_char)*p); i++) {
+			if (lim && i >= lim)
+				break;
+			++p;
+			++c;
+		}
+
+		if (terminator && terminator < 3) {
+			if (1 == terminator && *p != '\'')
+				return(spec_norm(sv, 0));
+			if (2 == terminator && *p != ']')
+				return(spec_norm(sv, 0));
+			++p;
+			++c;
+		}
+
+		return(spec_norm(sv, c));
+	case ('f'):
+		/* FALLTHROUGH */
+	case ('F'):
+		/* FALLTHROUGH */
+	case ('*'):
+		if ('\0' == *++p || isspace((u_char)*p))
+			return(spec_norm(sv, 0));
+		switch (*p) {
+		case ('('):
+			if ('\0' == *++p || isspace((u_char)*p))
+				return(spec_norm(sv, 0));
+			return(spec_norm(sv, 4));
+		case ('['):
+			for (c = 3, p++; *p && ']' != *p; p++, c++)
+				if (isspace((u_char)*p))
+					break;
+			return(spec_norm(sv, *p == ']' ? c : 0));
+		default:
+			break;
+		}
+		return(spec_norm(sv, 3));
+	case ('('):
+		if ('\0' == *++p || isspace((u_char)*p))
+			return(spec_norm(sv, 0));
+		if ('\0' == *++p || isspace((u_char)*p))
+			return(spec_norm(sv, 0));
+		return(spec_norm(sv, 4));
+	case ('['):
+		break;
+	default:
+		return(spec_norm(sv, 0));
+	}
+
+	for (c = 3, p++; *p && ']' != *p; p++, c++)
+		if (isspace((u_char)*p))
+			break;
+
+	return(spec_norm(sv, *p == ']' ? c : 0));
+}
+
+
+void *
+mandoc_calloc(size_t num, size_t size)
+{
+	void		*ptr;
+
+	ptr = calloc(num, size);
+	if (NULL == ptr) {
+		perror(NULL);
+		exit(EXIT_FAILURE);
+	}
+
+	return(ptr);
+}
+
+
+void *
+mandoc_malloc(size_t size)
+{
+	void		*ptr;
+
+	ptr = malloc(size);
+	if (NULL == ptr) {
+		perror(NULL);
+		exit(EXIT_FAILURE);
+	}
+
+	return(ptr);
+}
+
+
+void *
+mandoc_realloc(void *ptr, size_t size)
+{
+
+	ptr = realloc(ptr, size);
+	if (NULL == ptr) {
+		perror(NULL);
+		exit(EXIT_FAILURE);
+	}
+
+	return(ptr);
+}
+
+
+char *
+mandoc_strdup(const char *ptr)
+{
+	char		*p;
+
+	p = strdup(ptr);
+	if (NULL == p) {
+		perror(NULL);
+		exit(EXIT_FAILURE);
+	}
+
+	return(p);
+}
+
+
+static int
+a2time(time_t *t, const char *fmt, const char *p)
+{
+	struct tm	 tm;
+	char		*pp;
+
+	memset(&tm, 0, sizeof(struct tm));
+
+	pp = strptime(p, fmt, &tm);
+	if (NULL != pp && '\0' == *pp) {
+		*t = mktime(&tm);
+		return(1);
+	}
+
+	return(0);
+}
+
+
+/*
+ * Convert from a manual date string (see mdoc(7) and man(7)) into a
+ * date according to the stipulated date type.
+ */
+time_t
+mandoc_a2time(int flags, const char *p)
+{
+	time_t		 t;
+
+	if (MTIME_MDOCDATE & flags) {
+		if (0 == strcmp(p, "$" "Mdocdate$"))
+			return(time(NULL));
+		if (a2time(&t, "$" "Mdocdate: %b %d %Y $", p))
+			return(t);
+	}
+
+	if (MTIME_CANONICAL & flags || MTIME_REDUCED & flags) 
+		if (a2time(&t, "%b %d, %Y", p))
+			return(t);
+
+	if (MTIME_ISO_8601 & flags) 
+		if (a2time(&t, "%Y-%m-%d", p))
+			return(t);
+
+	if (MTIME_REDUCED & flags) {
+		if (a2time(&t, "%d, %Y", p))
+			return(t);
+		if (a2time(&t, "%Y", p))
+			return(t);
+	}
+
+	return(0);
+}
+
+
+int
+mandoc_eos(const char *p, size_t sz)
+{
+
+	if (0 == sz)
+		return(0);
+
+	/*
+	 * End-of-sentence recognition must include situations where
+	 * some symbols, such as `)', allow prior EOS punctuation to
+	 * propogate outward.
+	 */
+
+	for ( ; sz; sz--) {
+		switch (p[(int)sz - 1]) {
+		case ('\"'):
+			/* FALLTHROUGH */
+		case ('\''):
+			/* FALLTHROUGH */
+		case (']'):
+			/* FALLTHROUGH */
+		case (')'):
+			break;
+		case ('.'):
+			/* Escaped periods. */
+			if (sz > 1 && '\\' == p[(int)sz - 2])
+				return(0);
+			/* FALLTHROUGH */
+		case ('!'):
+			/* FALLTHROUGH */
+		case ('?'):
+			return(1);
+		default:
+			return(0);
+		}
+	}
+
+	return(0);
+}
+
+
+int
+mandoc_hyph(const char *start, const char *c)
+{
+
+	/*
+	 * Choose whether to break at a hyphenated character.  We only
+	 * do this if it's free-standing within a word.
+	 */
+
+	/* Skip first/last character of buffer. */
+	if (c == start || '\0' == *(c + 1))
+		return(0);
+	/* Skip first/last character of word. */
+	if ('\t' == *(c + 1) || '\t' == *(c - 1))
+		return(0);
+	if (' ' == *(c + 1) || ' ' == *(c - 1))
+		return(0);
+	/* Skip double invocations. */
+	if ('-' == *(c + 1) || '-' == *(c - 1))
+		return(0);
+	/* Skip escapes. */
+	if ('\\' == *(c - 1))
+		return(0);
+
+	return(1);
+}
Index: Makefile
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/Makefile,v
retrieving revision 1.284
retrieving revision 1.285
diff -LMakefile -LMakefile -u -p -r1.284 -r1.285
--- Makefile
+++ Makefile
@@ -37,11 +37,11 @@ ROFFSRCS   = roff.c
 
 ROFFOBJS   = roff.o
 
-MANDOCLNS  = mandoc.ln
+MANDOCLNS  = libmandoc.ln
 
-MANDOCSRCS = mandoc.c
+MANDOCSRCS = libmandoc.c
 
-MANDOCOBJS = mandoc.o
+MANDOCOBJS = libmandoc.o
 
 MDOCLNS	   = mdoc_macro.ln mdoc.ln mdoc_hash.ln mdoc_strings.ln \
 	     mdoc_argv.ln mdoc_validate.ln mdoc_action.ln \
@@ -61,7 +61,7 @@ MANLNS	   = man_macro.ln man.ln man_hash
 MANOBJS	   = man_macro.o man.o man_hash.o man_validate.o \
 	     man_action.o man_argv.o
 MANSRCS	   = man_macro.c man.c man_hash.c man_validate.c \
-	     man_action.c mandoc.c man_argv.c
+	     man_action.c libmandoc.c man_argv.c
 
 MAINLNS	   = main.ln mdoc_term.ln chars.ln term.ln tree.ln \
 	     compat.ln man_term.ln html.ln mdoc_html.ln \
@@ -233,7 +233,7 @@ man_html.ln man_html.o: man_html.c html.
 
 out.ln out.o: out.c out.h
 
-mandoc.ln mandoc.o: mandoc.c libmandoc.h
+libmandoc.ln libmandoc.o: libmandoc.c libmandoc.h
 
 tree.ln tree.o: tree.c man.h mdoc.h
 
--
 To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2010-07-05 20:00 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-07-05 20:00 mdocml: Renamed mandoc.c to libmandoc.c kristaps

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).