/* $Id$ */ /* * Copyright (c) 2008 Kristaps Dzonsons * * 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. */ #include #include #include #include "libmdocml.h" #include "private.h" #include "ml.h" /* FIXME: make this roff_section and so on. */ char * ml_section(enum roffmsec sec) { switch (sec) { case(ROFF_MSEC_1): return("1"); case(ROFF_MSEC_2): return("2"); case(ROFF_MSEC_3): return("3"); case(ROFF_MSEC_3p): return("3p"); case(ROFF_MSEC_4): return("4"); case(ROFF_MSEC_5): return("5"); case(ROFF_MSEC_6): return("6"); case(ROFF_MSEC_7): return("7"); case(ROFF_MSEC_8): return("8"); case(ROFF_MSEC_9): return("9"); case(ROFF_MSEC_UNASS): return("unass"); case(ROFF_MSEC_DRAFT): return("draft"); case(ROFF_MSEC_PAPER): return("paper"); default: break; } abort(); /* NOTREACHED */ } char * ml_literal(int tok, const int *argc, const char **argv, const char **morep) { switch (tok) { case (ROFF_Ex): return ("The %s utility exits 0 on success, and " ">0 if an error occurs."); case (ROFF_Rv): return ("The %s() function returns the value 0 if " "successful; otherwise the value -1 " "is returned and the global variable " "errno " "is set to indicate the error."); case (ROFF_In): return("#include <%s>"); case (ROFF_At): /* FIXME: this should be in roff.c. */ assert(NULL == *argv); assert(ROFF_ARGMAX == *argc); if (NULL == *morep) return("AT&T UNIX"); if (0 == strcmp(*morep, "v1")) return("Version 1 AT&T UNIX"); else if (0 == strcmp(*morep, "v2")) return("Version 2 AT&T UNIX"); else if (0 == strcmp(*morep, "v3")) return("Version 3 AT&T UNIX"); else if (0 == strcmp(*morep, "v6")) return("Version 6 AT&T UNIX"); else if (0 == strcmp(*morep, "v7")) return("Version 7 AT&T UNIX"); else if (0 == strcmp(*morep, "32v")) return("Version 32v AT&T UNIX"); else if (0 == strcmp(*morep, "V.1")) return("AT&T System V.1 UNIX"); else if (0 == strcmp(*morep, "V.4")) return("AT&T System V.4 UNIX"); abort(); /* NOTREACHED */ case (ROFF_St): assert(ROFF_ARGMAX != *argc); assert(NULL == *argv); switch (*argc) { case(ROFF_p1003_1_88): return("IEEE Std 1003.1-1988 " "(“POSIX”)"); case(ROFF_p1003_1_90): return("IEEE Std 1003.1-1990 " "(“POSIX”)"); case(ROFF_p1003_1_96): return("ISO/IEC 9945-1:1996 " "(“POSIX”)"); case(ROFF_p1003_1_2001): return("IEEE Std 1003.1-2001 " "(“POSIX”)"); case(ROFF_p1003_1_2004): return("IEEE Std 1003.1-2004 " "(“POSIX”)"); case(ROFF_p1003_1): return("IEEE Std 1003.1 " "(“POSIX”)"); case(ROFF_p1003_1b): return("IEEE Std 1003.1b " "(“POSIX”)"); case(ROFF_p1003_1b_93): return("IEEE Std 1003.1b-1993 " "(“POSIX”)"); case(ROFF_p1003_1c_95): return("IEEE Std 1003.1c-1995 " "(“POSIX”)"); case(ROFF_p1003_1g_2000): return("IEEE Std 1003.1g-2000 " "(“POSIX”)"); case(ROFF_p1003_2_92): return("IEEE Std 1003.2-1992 " "(“POSIX.2”)"); case(ROFF_p1387_2_95): return("IEEE Std 1387.2-1995 " "(“POSIX.7.2”)"); case(ROFF_p1003_2): return("IEEE Std 1003.2 " "(“POSIX.2”)"); case(ROFF_p1387_2): return("IEEE Std 1387.2 " "(“POSIX.7.2”)"); case(ROFF_isoC_90): return("ISO/IEC 9899:1990 " "(“ISO C90”)"); case(ROFF_isoC_amd1): return("ISO/IEC 9899/AMD1:1995 " "(“ISO C90”)"); case(ROFF_isoC_tcor1): return("ISO/IEC 9899/TCOR1:1994 " "(“ISO C90”)"); case(ROFF_isoC_tcor2): return("ISO/IEC 9899/TCOR2:1995 " "(“ISO C90”)"); case(ROFF_isoC_99): return("ISO/IEC 9899:1999 " "(“ISO C99”)"); case(ROFF_ansiC): return("ANSI X3.159-1989 " "(“ANSI C”)"); case(ROFF_ansiC_89): return("ANSI X3.159-1989 " "(“ANSI C”)"); case(ROFF_ansiC_99): return("ANSI/ISO/IEC 9899-1999 " "(“ANSI C99”)"); case(ROFF_ieee754): return("IEEE Std 754-1985"); case(ROFF_iso8802_3): return("ISO 8802-3: 1989"); case(ROFF_xpg3): return("X/Open Portability Guide Issue 3 " "(“XPG3”)"); case(ROFF_xpg4): return("X/Open Portability Guide Issue 4 " "(“XPG4”)"); case(ROFF_xpg4_2): return("X/Open Portability Guide Issue 4.2 " "(“XPG4.2”)"); case(ROFF_xpg4_3): return("X/Open Portability Guide Issue 4.3 " "(“XPG4.3”)"); case(ROFF_xbd5): return("X/Open System Interface Definitions " "Issue 5 (“XBD5”)"); case(ROFF_xcu5): return("X/Open Commands and Utilities Issue 5 " "(“XCU5”)"); case(ROFF_xsh5): return("X/Open System Interfaces and Headers " "Issue 5 (“XSH5”)"); case(ROFF_xns5): return("X/Open Networking Services Issue 5 " "(“XNS5”)"); case(ROFF_xns5_2d2_0): return("X/Open Networking Services " "Issue 5.2 Draft 2.0 " "(“XNS5.2D2.0”)"); case(ROFF_xcurses4_2): return("X/Open Curses Issue 4 Version 2 " "(“XCURSES4.2”)"); case(ROFF_susv2): return("Version 2 of the Single " "UNIX Specification"); case(ROFF_susv3): return("Version 3 of the Single " "UNIX Specification"); case(ROFF_svid4): return("System V Interface Definition, Fourth " "Edition (“SVID4”)"); default: break; } abort(); /* NOTREACHED */ case (ROFF_Bt): return("is currently in beta test."); case (ROFF_Ud): return("currently under development."); case (ROFF_Fx): return("FreeBSD"); case (ROFF_Nx): return("NetBSD"); case (ROFF_Ox): return("OpenBSD"); case (ROFF_Ux): return("UNIX"); case (ROFF_Bx): return("BSD"); case (ROFF_Bsx): return("BSDI BSD/OS"); default: break; } abort(); /* NOTREACHED */ }