Annotation of mandoc/literals.c, Revision 1.8
1.8 ! kristaps 1: /* $Id: literals.c,v 1.7 2008/12/10 10:43:57 kristaps Exp $ */
1.1 kristaps 2: /*
3: * Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
4: *
5: * Permission to use, copy, modify, and distribute this software for any
6: * purpose with or without fee is hereby granted, provided that the
7: * above copyright notice and this permission notice appear in all
8: * copies.
9: *
10: * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11: * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12: * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13: * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14: * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15: * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16: * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17: * PERFORMANCE OF THIS SOFTWARE.
18: */
19: #include <assert.h>
20: #include <string.h>
21: #include <stdlib.h>
22:
23: #include "private.h"
24:
1.5 kristaps 25: #define ROFF_ATTname_V1 "v1"
1.6 kristaps 26: #define ROFF_ATTname_V2 "v2"
1.5 kristaps 27: #define ROFF_ATTname_V3 "v3"
28: #define ROFF_ATTname_V6 "v6"
29: #define ROFF_ATTname_V7 "v7"
30: #define ROFF_ATTname_32V "32v"
31: #define ROFF_ATTname_V_1 "V.1"
32: #define ROFF_ATTname_V_4 "V.4"
33:
34: #define ROFFSecname_NAME "NAME"
35: #define ROFFSecname_SYNOP "SYNOPSIS"
36: #define ROFFSecname_DESC "DESCRIPTION"
37: #define ROFFSecname_ENV "ENVIRONMENT"
38: #define ROFFSecname_FILES "FILES"
39: #define ROFFSecname_EX "EXAMPLES"
40: #define ROFFSecname_DIAG "DIAGNOSTICS"
41: #define ROFFSecname_ERRS "ERRORS"
42: #define ROFFSecname_STAND "STANDARDS"
43: #define ROFFSecname_HIST "HISTORY"
44: #define ROFFSecname_AUTH "AUTHORS"
45: #define ROFFSecname_CAVEATS "CAVEATS"
46: #define ROFFSecname_BUGS "BUGS"
47: #define ROFFSecname_RETVAL "RETURN VALUES"
48: #define ROFFSecname_RETVAL1 "RETURN"
49: #define ROFFSecname_RETVAL2 "VALUES"
50: #define ROFFSecname_SEEALSO "SEE ALSO"
51: #define ROFFSecname_SEEALSO1 "SEE"
52: #define ROFFSecname_SEEALSO2 "ALSO"
53:
54: #define ROFF_MSECname_1 "1"
55: #define ROFF_MSECname_2 "2"
56: #define ROFF_MSECname_3 "3"
57: #define ROFF_MSECname_3p "3p"
58: #define ROFF_MSECname_4 "4"
59: #define ROFF_MSECname_5 "5"
60: #define ROFF_MSECname_6 "6"
61: #define ROFF_MSECname_7 "7"
62: #define ROFF_MSECname_8 "8"
63: #define ROFF_MSECname_9 "9"
64: #define ROFF_MSECname_UNASS "unass"
65: #define ROFF_MSECname_DRAFT "draft"
66: #define ROFF_MSECname_PAPER "paper"
67:
1.7 kristaps 68: #define ROFF_VOLname_AMD "AMD"
69: #define ROFF_VOLname_IND "IND"
70: #define ROFF_VOLname_KM "KM"
71: #define ROFF_VOLname_LOCAL "LOCAL"
72: #define ROFF_VOLname_PRM "PRM"
73: #define ROFF_VOLname_PS1 "PS1"
74: #define ROFF_VOLname_SMM "SMM"
75: #define ROFF_VOLname_URM "URM"
76: #define ROFF_VOLname_USD "USD"
77: #define ROFF_ARCHname_ALPHA "alpha"
78: #define ROFF_ARCHname_AMD64 "amd64"
79: #define ROFF_ARCHname_AMIGA "amiga"
80: #define ROFF_ARCHname_ARC "arc"
81: #define ROFF_ARCHname_ARMISH "armish"
82: #define ROFF_ARCHname_AVIION "aviion"
83: #define ROFF_ARCHname_HP300 "hp300"
84: #define ROFF_ARCHname_HPPA "hppa"
85: #define ROFF_ARCHname_HPPA64 "hppa64"
86: #define ROFF_ARCHname_I386 "i386"
87: #define ROFF_ARCHname_LANDISK "landisk"
88: #define ROFF_ARCHname_LUNA88K "luna88k"
89: #define ROFF_ARCHname_MAC68K "mac68k"
90: #define ROFF_ARCHname_MACPPC "macppc"
91: #define ROFF_ARCHname_MVME68K "mvme68k"
92: #define ROFF_ARCHname_MVME88K "mvme88k"
93: #define ROFF_ARCHname_MVMEPPC "mvmeppc"
94: #define ROFF_ARCHname_PMAX "pmax"
95: #define ROFF_ARCHname_SGI "sgi"
96: #define ROFF_ARCHname_SPARC "sparc"
97: #define ROFF_ARCHname_SPARC64 "sparc64"
98: #define ROFF_ARCHname_SUN3 "sun3"
99: #define ROFF_ARCHname_VAX "vax"
100: #define ROFF_ARCHname_ZAURUS "zaurus"
101:
1.5 kristaps 102: int
103: roff_sec(const char **p)
104: {
105:
106: assert(*p);
107: if (NULL != *(p + 1)) {
108: if (NULL != *(p + 2))
109: return(ROFFSec_OTHER);
110: if (0 == strcmp(*p, ROFFSecname_RETVAL1) &&
111: 0 == strcmp(*(p + 1), ROFFSecname_RETVAL2))
112: return(ROFFSec_RETVAL);
113: if (0 == strcmp(*p, ROFFSecname_SEEALSO1) &&
114: 0 == strcmp(*(p + 1), ROFFSecname_SEEALSO2))
115: return(ROFFSec_SEEALSO);
116: return(ROFFSec_OTHER);
117: }
118:
119: if (0 == strcmp(*p, ROFFSecname_NAME))
120: return(ROFFSec_NAME);
121: else if (0 == strcmp(*p, ROFFSecname_SYNOP))
122: return(ROFFSec_SYNOP);
123: else if (0 == strcmp(*p, ROFFSecname_DESC))
124: return(ROFFSec_DESC);
125: else if (0 == strcmp(*p, ROFFSecname_ENV))
126: return(ROFFSec_ENV);
127: else if (0 == strcmp(*p, ROFFSecname_FILES))
128: return(ROFFSec_FILES);
129: else if (0 == strcmp(*p, ROFFSecname_EX))
130: return(ROFFSec_EX);
131: else if (0 == strcmp(*p, ROFFSecname_DIAG))
132: return(ROFFSec_DIAG);
133: else if (0 == strcmp(*p, ROFFSecname_ERRS))
134: return(ROFFSec_ERRS);
135: else if (0 == strcmp(*p, ROFFSecname_STAND))
136: return(ROFFSec_STAND);
137: else if (0 == strcmp(*p, ROFFSecname_HIST))
138: return(ROFFSec_HIST);
139: else if (0 == strcmp(*p, ROFFSecname_AUTH))
140: return(ROFFSec_AUTH);
141: else if (0 == strcmp(*p, ROFFSecname_CAVEATS))
142: return(ROFFSec_CAVEATS);
143: else if (0 == strcmp(*p, ROFFSecname_BUGS))
144: return(ROFFSec_BUGS);
145: else if (0 == strcmp(*p, ROFFSecname_RETVAL))
146: return(ROFFSec_RETVAL);
147: else if (0 == strcmp(*p, ROFFSecname_SEEALSO))
148: return(ROFFSec_SEEALSO);
149:
150: return(ROFFSec_OTHER);
151: }
152:
153:
154: enum roffmsec
155: roff_msec(const char *p)
156: {
157:
158: assert(p);
159: if (0 == strcmp(p, ROFF_MSECname_1))
160: return(ROFF_MSEC_1);
161: else if (0 == strcmp(p, ROFF_MSECname_2))
162: return(ROFF_MSEC_2);
163: else if (0 == strcmp(p, ROFF_MSECname_3))
164: return(ROFF_MSEC_3);
165: else if (0 == strcmp(p, ROFF_MSECname_3p))
166: return(ROFF_MSEC_3p);
167: else if (0 == strcmp(p, ROFF_MSECname_4))
168: return(ROFF_MSEC_4);
169: else if (0 == strcmp(p, ROFF_MSECname_5))
170: return(ROFF_MSEC_5);
171: else if (0 == strcmp(p, ROFF_MSECname_6))
172: return(ROFF_MSEC_6);
173: else if (0 == strcmp(p, ROFF_MSECname_7))
174: return(ROFF_MSEC_7);
175: else if (0 == strcmp(p, ROFF_MSECname_8))
176: return(ROFF_MSEC_8);
177: else if (0 == strcmp(p, ROFF_MSECname_9))
178: return(ROFF_MSEC_9);
179: else if (0 == strcmp(p, ROFF_MSECname_UNASS))
180: return(ROFF_MSEC_UNASS);
181: else if (0 == strcmp(p, ROFF_MSECname_DRAFT))
182: return(ROFF_MSEC_DRAFT);
183: else if (0 == strcmp(p, ROFF_MSECname_PAPER))
184: return(ROFF_MSEC_PAPER);
185:
186: return(ROFF_MSEC_MAX);
187: }
1.4 kristaps 188:
1.1 kristaps 189:
190: char *
1.5 kristaps 191: roff_msecname(enum roffmsec sec)
1.2 kristaps 192: {
193:
194: switch (sec) {
195: case(ROFF_MSEC_1):
1.5 kristaps 196: return(ROFF_MSECname_1);
1.2 kristaps 197: case(ROFF_MSEC_2):
1.5 kristaps 198: return(ROFF_MSECname_2);
1.2 kristaps 199: case(ROFF_MSEC_3):
1.5 kristaps 200: return(ROFF_MSECname_3);
1.2 kristaps 201: case(ROFF_MSEC_3p):
1.5 kristaps 202: return(ROFF_MSECname_3p);
1.2 kristaps 203: case(ROFF_MSEC_4):
1.5 kristaps 204: return(ROFF_MSECname_4);
1.2 kristaps 205: case(ROFF_MSEC_5):
1.5 kristaps 206: return(ROFF_MSECname_5);
1.2 kristaps 207: case(ROFF_MSEC_6):
1.5 kristaps 208: return(ROFF_MSECname_6);
1.2 kristaps 209: case(ROFF_MSEC_7):
1.5 kristaps 210: return(ROFF_MSECname_7);
1.2 kristaps 211: case(ROFF_MSEC_8):
1.5 kristaps 212: return(ROFF_MSECname_8);
1.2 kristaps 213: case(ROFF_MSEC_9):
1.5 kristaps 214: return(ROFF_MSECname_9);
1.2 kristaps 215: case(ROFF_MSEC_UNASS):
1.5 kristaps 216: return(ROFF_MSECname_UNASS);
1.2 kristaps 217: case(ROFF_MSEC_DRAFT):
1.5 kristaps 218: return(ROFF_MSECname_DRAFT);
1.2 kristaps 219: case(ROFF_MSEC_PAPER):
1.5 kristaps 220: return(ROFF_MSECname_PAPER);
1.2 kristaps 221: default:
222: break;
223: }
224:
225: abort();
226: /* NOTREACHED */
227: }
228:
229:
230: char *
1.5 kristaps 231: roff_fmtstring(int tok)
1.1 kristaps 232: {
233:
234: switch (tok) {
235: case (ROFF_Ex):
236: return ("The %s utility exits 0 on success, and "
1.5 kristaps 237: ">0 if an error occurs.");
1.1 kristaps 238: case (ROFF_Rv):
239: return ("The %s() function returns the value 0 if "
240: "successful; otherwise the value -1 "
241: "is returned and the global variable "
1.5 kristaps 242: "errno is set to indicate the error.");
1.1 kristaps 243: case (ROFF_In):
1.5 kristaps 244: return("#include \\*(Lt%s\\*(Gt");
245: default:
246: break;
247: }
248:
249: abort();
250: /* NOTREACHED */
251: }
252:
253:
254: char *
255: roff_literal(int tok, const int *argc,
256: const char **argv, const char **morep)
257: {
258:
259: switch (tok) {
1.1 kristaps 260: case (ROFF_At):
261: assert(NULL == *argv);
262: assert(ROFF_ARGMAX == *argc);
263: if (NULL == *morep)
1.5 kristaps 264: return("AT&T UNIX");
265:
266: switch (roff_att(*morep)) {
267: case (ROFF_ATT_V1):
268: return("Version 1 AT&T UNIX");
269: case (ROFF_ATT_V2):
270: return("Version 2 AT&T UNIX");
271: case (ROFF_ATT_V3):
272: return("Version 3 AT&T UNIX");
273: case (ROFF_ATT_V6):
274: return("Version 6 AT&T UNIX");
275: case (ROFF_ATT_V7):
276: return("Version 7 AT&T UNIX");
277: case (ROFF_ATT_32V):
278: return("Version 32v AT&T UNIX");
279: case (ROFF_ATT_V_1):
280: return("AT&T System V.1 UNIX");
281: case (ROFF_ATT_V_4):
282: return("AT&T System V.4 UNIX");
283: default:
284: break;
285: }
286:
1.1 kristaps 287: abort();
288: /* NOTREACHED */
1.5 kristaps 289:
1.1 kristaps 290: case (ROFF_St):
291: assert(ROFF_ARGMAX != *argc);
292: assert(NULL == *argv);
293: switch (*argc) {
294: case(ROFF_p1003_1_88):
295: return("IEEE Std 1003.1-1988 "
1.5 kristaps 296: "(\\*(LqPOSIX\\*(Rq)");
1.1 kristaps 297: case(ROFF_p1003_1_90):
298: return("IEEE Std 1003.1-1990 "
1.5 kristaps 299: "(\\*(LqPOSIX\\*(Rq)");
1.1 kristaps 300: case(ROFF_p1003_1_96):
301: return("ISO/IEC 9945-1:1996 "
1.5 kristaps 302: "(\\*(LqPOSIX\\*(Rq)");
1.1 kristaps 303: case(ROFF_p1003_1_2001):
304: return("IEEE Std 1003.1-2001 "
1.5 kristaps 305: "(\\*(LqPOSIX\\*(Rq)");
1.1 kristaps 306: case(ROFF_p1003_1_2004):
307: return("IEEE Std 1003.1-2004 "
1.5 kristaps 308: "(\\*(LqPOSIX\\*(Rq)");
1.1 kristaps 309: case(ROFF_p1003_1):
310: return("IEEE Std 1003.1 "
1.5 kristaps 311: "(\\*(LqPOSIX\\*(Rq)");
1.1 kristaps 312: case(ROFF_p1003_1b):
313: return("IEEE Std 1003.1b "
1.5 kristaps 314: "(\\*(LqPOSIX\\*(Rq)");
1.1 kristaps 315: case(ROFF_p1003_1b_93):
316: return("IEEE Std 1003.1b-1993 "
1.5 kristaps 317: "(\\*(LqPOSIX\\*(Rq)");
1.1 kristaps 318: case(ROFF_p1003_1c_95):
319: return("IEEE Std 1003.1c-1995 "
1.5 kristaps 320: "(\\*(LqPOSIX\\*(Rq)");
1.1 kristaps 321: case(ROFF_p1003_1g_2000):
322: return("IEEE Std 1003.1g-2000 "
1.5 kristaps 323: "(\\*(LqPOSIX\\*(Rq)");
1.1 kristaps 324: case(ROFF_p1003_2_92):
325: return("IEEE Std 1003.2-1992 "
1.5 kristaps 326: "(\\*(LqPOSIX.2\\*(Rq)");
1.1 kristaps 327: case(ROFF_p1387_2_95):
328: return("IEEE Std 1387.2-1995 "
1.5 kristaps 329: "(\\*(LqPOSIX.7.2\\*(Rq)");
1.1 kristaps 330: case(ROFF_p1003_2):
331: return("IEEE Std 1003.2 "
1.5 kristaps 332: "(\\*(LqPOSIX.2\\*(Rq)");
1.1 kristaps 333: case(ROFF_p1387_2):
334: return("IEEE Std 1387.2 "
1.5 kristaps 335: "(\\*(LqPOSIX.7.2\\*(Rq)");
1.1 kristaps 336: case(ROFF_isoC_90):
337: return("ISO/IEC 9899:1990 "
1.5 kristaps 338: "(\\*(LqISO C90\\*(Rq)");
1.1 kristaps 339: case(ROFF_isoC_amd1):
340: return("ISO/IEC 9899/AMD1:1995 "
1.5 kristaps 341: "(\\*(LqISO C90\\*(Rq)");
1.1 kristaps 342: case(ROFF_isoC_tcor1):
343: return("ISO/IEC 9899/TCOR1:1994 "
1.5 kristaps 344: "(\\*(LqISO C90\\*(Rq)");
1.1 kristaps 345: case(ROFF_isoC_tcor2):
346: return("ISO/IEC 9899/TCOR2:1995 "
1.5 kristaps 347: "(\\*(LqISO C90\\*(Rq)");
1.1 kristaps 348: case(ROFF_isoC_99):
349: return("ISO/IEC 9899:1999 "
1.5 kristaps 350: "(\\*(LqISO C99\\*(Rq)");
1.1 kristaps 351: case(ROFF_ansiC):
352: return("ANSI X3.159-1989 "
1.5 kristaps 353: "(\\*(LqANSI C\\*(Rq)");
1.1 kristaps 354: case(ROFF_ansiC_89):
355: return("ANSI X3.159-1989 "
1.5 kristaps 356: "(\\*(LqANSI C\\*(Rq)");
1.1 kristaps 357: case(ROFF_ansiC_99):
358: return("ANSI/ISO/IEC 9899-1999 "
1.5 kristaps 359: "(\\*(LqANSI C99\\*(Rq)");
1.1 kristaps 360: case(ROFF_ieee754):
361: return("IEEE Std 754-1985");
362: case(ROFF_iso8802_3):
363: return("ISO 8802-3: 1989");
364: case(ROFF_xpg3):
365: return("X/Open Portability Guide Issue 3 "
1.5 kristaps 366: "(\\*(LqXPG3\\*(Rq)");
1.1 kristaps 367: case(ROFF_xpg4):
368: return("X/Open Portability Guide Issue 4 "
1.5 kristaps 369: "(\\*(LqXPG4\\*(Rq)");
1.1 kristaps 370: case(ROFF_xpg4_2):
371: return("X/Open Portability Guide Issue 4.2 "
1.5 kristaps 372: "(\\*(LqXPG4.2\\*(Rq)");
1.1 kristaps 373: case(ROFF_xpg4_3):
374: return("X/Open Portability Guide Issue 4.3 "
1.5 kristaps 375: "(\\*(LqXPG4.3\\*(Rq)");
1.1 kristaps 376: case(ROFF_xbd5):
377: return("X/Open System Interface Definitions "
1.5 kristaps 378: "Issue 5 (\\*(LqXBD5\\*(Rq)");
1.1 kristaps 379: case(ROFF_xcu5):
380: return("X/Open Commands and Utilities Issue 5 "
1.5 kristaps 381: "(\\*(LqXCU5\\*(Rq)");
1.1 kristaps 382: case(ROFF_xsh5):
383: return("X/Open System Interfaces and Headers "
1.5 kristaps 384: "Issue 5 (\\*(LqXSH5\\*(Rq)");
1.1 kristaps 385: case(ROFF_xns5):
386: return("X/Open Networking Services Issue 5 "
1.5 kristaps 387: "(\\*(LqXNS5\\*(Rq)");
1.1 kristaps 388: case(ROFF_xns5_2d2_0):
389: return("X/Open Networking Services "
390: "Issue 5.2 Draft 2.0 "
1.5 kristaps 391: "(\\*(LqXNS5.2D2.0\\*(Rq)");
1.1 kristaps 392: case(ROFF_xcurses4_2):
393: return("X/Open Curses Issue 4 Version 2 "
1.5 kristaps 394: "(\\*(LqXCURSES4.2\\*(Rq)");
1.1 kristaps 395: case(ROFF_susv2):
396: return("Version 2 of the Single "
397: "UNIX Specification");
398: case(ROFF_susv3):
399: return("Version 3 of the Single "
400: "UNIX Specification");
401: case(ROFF_svid4):
402: return("System V Interface Definition, Fourth "
1.5 kristaps 403: "Edition (\\*(LqSVID4\\*(Rq)");
1.1 kristaps 404: default:
405: break;
406: }
407: abort();
408: /* NOTREACHED */
1.5 kristaps 409:
1.1 kristaps 410: case (ROFF_Bt):
411: return("is currently in beta test.");
412: case (ROFF_Ud):
413: return("currently under development.");
414: case (ROFF_Fx):
415: return("FreeBSD");
416: case (ROFF_Nx):
417: return("NetBSD");
418: case (ROFF_Ox):
419: return("OpenBSD");
420: case (ROFF_Ux):
421: return("UNIX");
422: case (ROFF_Bx):
423: return("BSD");
424: case (ROFF_Bsx):
425: return("BSDI BSD/OS");
426: default:
427: break;
428: }
1.5 kristaps 429:
1.1 kristaps 430: abort();
431: /* NOTREACHED */
432: }
433:
1.5 kristaps 434:
435: enum roffatt
436: roff_att(const char *p)
437: {
438:
439: assert(p);
440: if (0 == strcmp(p, ROFF_ATTname_V1))
441: return(ROFF_ATT_V1);
442: else if (0 == strcmp(p, ROFF_ATTname_V2))
443: return(ROFF_ATT_V2);
444: else if (0 == strcmp(p, ROFF_ATTname_V3))
445: return(ROFF_ATT_V3);
446: else if (0 == strcmp(p, ROFF_ATTname_V6))
447: return(ROFF_ATT_V6);
448: else if (0 == strcmp(p, ROFF_ATTname_V7))
449: return(ROFF_ATT_V7);
450: else if (0 == strcmp(p, ROFF_ATTname_32V))
451: return(ROFF_ATT_32V);
452: else if (0 == strcmp(p, ROFF_ATTname_V_1))
453: return(ROFF_ATT_V_1);
454: else if (0 == strcmp(p, ROFF_ATTname_V_4))
455: return(ROFF_ATT_V_4);
456:
457: return(ROFF_ATT_MAX);
458: }
459:
1.7 kristaps 460:
461: enum roffvol
462: roff_vol(const char *p)
463: {
464:
465: if (0 == strcmp(p, ROFF_VOLname_AMD))
466: return(ROFF_VOL_AMD);
467: else if (0 == strcmp(p, ROFF_VOLname_IND))
468: return(ROFF_VOL_IND);
469: else if (0 == strcmp(p, ROFF_VOLname_KM))
470: return(ROFF_VOL_KM);
471: else if (0 == strcmp(p, ROFF_VOLname_LOCAL))
472: return(ROFF_VOL_LOCAL);
473: else if (0 == strcmp(p, ROFF_VOLname_PRM))
474: return(ROFF_VOL_PRM);
475: else if (0 == strcmp(p, ROFF_VOLname_PS1))
476: return(ROFF_VOL_PS1);
477: else if (0 == strcmp(p, ROFF_VOLname_SMM))
478: return(ROFF_VOL_SMM);
479: else if (0 == strcmp(p, ROFF_VOLname_URM))
480: return(ROFF_VOL_URM);
481: else if (0 == strcmp(p, ROFF_VOLname_USD))
482: return(ROFF_VOL_USD);
483: else if (0 == strcmp(p, ROFF_ARCHname_ALPHA))
484: return(ROFF_ARCH_ALPHA);
485: else if (0 == strcmp(p, ROFF_ARCHname_AMD64))
486: return(ROFF_ARCH_AMD64);
487: else if (0 == strcmp(p, ROFF_ARCHname_AMIGA))
488: return(ROFF_ARCH_AMIGA);
489: else if (0 == strcmp(p, ROFF_ARCHname_ARC))
490: return(ROFF_ARCH_ARC);
491: else if (0 == strcmp(p, ROFF_ARCHname_ARMISH))
492: return(ROFF_ARCH_ARMISH);
493: else if (0 == strcmp(p, ROFF_ARCHname_AVIION))
494: return(ROFF_ARCH_AVIION);
495: else if (0 == strcmp(p, ROFF_ARCHname_HP300))
496: return(ROFF_ARCH_HP300);
497: else if (0 == strcmp(p, ROFF_ARCHname_HPPA))
498: return(ROFF_ARCH_HPPA);
499: else if (0 == strcmp(p, ROFF_ARCHname_HPPA64))
500: return(ROFF_ARCH_HPPA64);
501: else if (0 == strcmp(p, ROFF_ARCHname_I386))
502: return(ROFF_ARCH_I386);
503: else if (0 == strcmp(p, ROFF_ARCHname_LANDISK))
504: return(ROFF_ARCH_LANDISK);
505: else if (0 == strcmp(p, ROFF_ARCHname_LUNA88K))
506: return(ROFF_ARCH_LUNA88K);
507: else if (0 == strcmp(p, ROFF_ARCHname_MAC68K))
508: return(ROFF_ARCH_MAC68K);
509: else if (0 == strcmp(p, ROFF_ARCHname_MACPPC))
510: return(ROFF_ARCH_MACPPC);
511: else if (0 == strcmp(p, ROFF_ARCHname_MVME68K))
512: return(ROFF_ARCH_MVME68K);
513: else if (0 == strcmp(p, ROFF_ARCHname_MVME88K))
514: return(ROFF_ARCH_MVME88K);
515: else if (0 == strcmp(p, ROFF_ARCHname_MVMEPPC))
516: return(ROFF_ARCH_MVMEPPC);
517: else if (0 == strcmp(p, ROFF_ARCHname_PMAX))
518: return(ROFF_ARCH_PMAX);
519: else if (0 == strcmp(p, ROFF_ARCHname_SGI))
520: return(ROFF_ARCH_SGI);
521: else if (0 == strcmp(p, ROFF_ARCHname_SPARC))
522: return(ROFF_ARCH_SPARC);
523: else if (0 == strcmp(p, ROFF_ARCHname_SPARC64))
524: return(ROFF_ARCH_SPARC64);
525: else if (0 == strcmp(p, ROFF_ARCHname_SUN3))
526: return(ROFF_ARCH_SUN3);
527: else if (0 == strcmp(p, ROFF_ARCHname_VAX))
528: return(ROFF_ARCH_VAX);
529: else if (0 == strcmp(p, ROFF_ARCHname_ZAURUS))
530: return(ROFF_ARCH_ZAURUS);
531:
532: return(ROFF_VOL_MAX);
533: }
1.8 ! kristaps 534:
! 535:
! 536: char *
! 537: roff_volname(enum roffvol vol)
! 538: {
! 539:
! 540: /* FIXME: is OpenBSD specific! */
! 541:
! 542: switch (vol) {
! 543: case(ROFF_VOL_AMD):
! 544: return("OpenBSD Ancestral Manual Documents");
! 545: case(ROFF_VOL_IND):
! 546: return("OpenBSD Manual Master Index");
! 547: case(ROFF_VOL_KM):
! 548: return("OpenBSD Kernel Manual");
! 549: case(ROFF_VOL_LOCAL):
! 550: return("OpenBSD Local Manual");
! 551: case(ROFF_VOL_PRM):
! 552: return("OpenBSD Programmer's Manual");
! 553: case(ROFF_VOL_PS1):
! 554: return("OpenBSD Programmer's Supplementary Documents");
! 555: case(ROFF_VOL_SMM):
! 556: return("OpenBSD System Manager's Manual");
! 557: case(ROFF_VOL_URM):
! 558: return("OpenBSD Reference Manual");
! 559: case(ROFF_VOL_USD):
! 560: return("OpenBSD User's Supplementary Documents");
! 561: case(ROFF_ARCH_ALPHA):
! 562: return("Alpha");
! 563: case(ROFF_ARCH_AMD64):
! 564: return("AMD64");
! 565: case(ROFF_ARCH_AMIGA):
! 566: return("Amiga");
! 567: case(ROFF_ARCH_ARC):
! 568: return("ARC");
! 569: case(ROFF_ARCH_ARMISH):
! 570: return("ARMISH");
! 571: case(ROFF_ARCH_AVIION):
! 572: return("AVIION");
! 573: case(ROFF_ARCH_HP300):
! 574: return("HP300");
! 575: case(ROFF_ARCH_HPPA):
! 576: return("HPPA");
! 577: case(ROFF_ARCH_HPPA64):
! 578: return("HPPA64");
! 579: case(ROFF_ARCH_I386):
! 580: return("i386");
! 581: case(ROFF_ARCH_LANDISK):
! 582: return("LANDISK");
! 583: case(ROFF_ARCH_LUNA88K):
! 584: return("Luna88K");
! 585: case(ROFF_ARCH_MAC68K):
! 586: return("Mac68K");
! 587: case(ROFF_ARCH_MACPPC):
! 588: return("MacPPC");
! 589: case(ROFF_ARCH_MVME68K):
! 590: return("MVME68K");
! 591: case(ROFF_ARCH_MVME88K):
! 592: return("MVME88K");
! 593: case(ROFF_ARCH_MVMEPPC):
! 594: return("MVMEPPC");
! 595: case(ROFF_ARCH_PMAX):
! 596: return("PMAX");
! 597: case(ROFF_ARCH_SGI):
! 598: return("SGI");
! 599: case(ROFF_ARCH_SPARC):
! 600: return("SPARC");
! 601: case(ROFF_ARCH_SPARC64):
! 602: return("SPARC64");
! 603: case(ROFF_ARCH_SUN3):
! 604: return("Sun3");
! 605: case(ROFF_ARCH_VAX):
! 606: return("Vax");
! 607: case(ROFF_ARCH_ZAURUS):
! 608: return("Zaurus");
! 609: default:
! 610: break;
! 611: }
! 612:
! 613: abort();
! 614: /* NOTREACHED */
! 615: }
CVSweb