|
|
1.1 root 1: /*
2: * putinfo.c
3: * This file is generated by MKinfo.awk.
4: * Do not make any changes directly to this file
5: */
6: #include <stdio.h>
7: #include <string.h>
8: #include <ctype.h>
9:
10: #define bool char
11: #define TRUE 1
12: #define FALSE 0
13:
14: #define MAXINDEX(array) (sizeof(array)/sizeof(array[0]))
15:
16: /*
17: * bools and boolcaps;
18: * lookup translate table for boolean fields.
19: */
20:
21: struct bools {
22: char *capname; /* termcap name */
23: char *infoname; /* terminfo name */
24: };
25:
26: struct bools boolcaps[] = {
27: { "bw", "bw" },
28: { "am", "am" },
29: { "xb", "xsb" },
30: { "xs", "xhp" },
31: { "xn", "xenl" },
32: { "eo", "eo" },
33: { "gn", "gn" },
34: { "hc", "hc" },
35: { "km", "km" },
36: { "hs", "hs" },
37: { "in", "in" },
38: { "da", "da" },
39: { "db", "db" },
40: { "mi", "mir" },
41: { "ms", "msgr" },
42: { "os", "os" },
43: { "es", "eslok" },
44: { "xt", "xt" },
45: { "hz", "hz" },
46: { "ul", "ul" },
47: { "xo", "xon" },
48: { "nx", "nxon" },
49: { "5i", "mc5i" },
50: { "HC", "chts" },
51: { "NR", "nrrmc" },
52: { "NP", "npc" },
53: { "ND", "ndscr" },
54: { "cc", "ccc" },
55: { "be", "bce" },
56: { "hl", "hls" },
57: { "YA", "xhpa" },
58: { "YB", "crxm" },
59: { "YC", "daisy" },
60: { "YD", "xvpa" },
61: { "YE", "sam" },
62: { "YF", "cpix" },
63: { "YG", "lpix" },
64: };
65:
66: #define MAXBOOLS MAXINDEX(boolcaps)
67:
68: /*
69: * nums and numcaps;
70: * lookuptranslate table for numeric capabilities.
71: */
72: struct nums {
73: char *capname; /* termcap name */
74: char *infoname; /* terminfo name */
75: };
76:
77: struct nums numcaps[] = {
78: { "co", "cols" },
79: { "it", "it" },
80: { "li", "lines" },
81: { "lm", "lm" },
82: { "sg", "xmc" },
83: { "pb", "pb" },
84: { "vt", "vt" },
85: { "ws", "wsl" },
86: { "Nl", "nlab" },
87: { "lh", "lh" },
88: { "lw", "lw" },
89: { "ma", "ma" },
90: { "MW", "wnum" },
91: { "Co", "colors" },
92: { "pa", "pairs" },
93: { "NC", "ncv" },
94: { "Ya", "bufsz" },
95: { "Yb", "spinv" },
96: { "Yc", "spinh" },
97: { "Yd", "maddr" },
98: { "Ye", "mjump" },
99: { "Yf", "mcs" },
100: { "Yg", "mls" },
101: { "Yh", "npins" },
102: { "Yi", "orc" },
103: { "Yj", "orl" },
104: { "Yk", "orhi" },
105: { "Yl", "orvi" },
106: { "Ym", "cps" },
107: { "Yn", "widcs" },
108: };
109:
110: #define MAXNUMS MAXINDEX(numcaps)
111:
112: /*
113: * sts and strcaps;
114: * lookuptranslate table for string capabilities.
115: */
116: struct strs {
117: char *capname; /* termcap name */
118: char *infoname; /* terminfo name */
119: char *dflt; /* default value */
120: };
121:
122: struct strs strcaps[] = {
123: { "bt", "cbt", ((char *)0) },
124: { "bl", "bel", "^G" },
125: { "cr", "cr", "\r" },
126: { "cs", "csr", ((char *)0) },
127: { "ct", "tbc", ((char *)0) },
128: { "cl", "clear", ((char *)0) },
129: { "ce", "el", ((char *)0) },
130: { "cd", "ed", ((char *)0) },
131: { "ch", "hpa", ((char *)0) },
132: { "CC", "cmdch", ((char *)0) },
133: { "cm", "cup", ((char *)0) },
134: { "do", "cud1", "\n" },
135: { "ho", "home", ((char *)0) },
136: { "vi", "civis", ((char *)0) },
137: { "le", "cub1", "\b" },
138: { "CM", "mrcup", ((char *)0) },
139: { "ve", "cnorm", ((char *)0) },
140: { "nd", "cuf1", ((char *)0) },
141: { "ll", "ll", ((char *)0) },
142: { "up", "cuu1", ((char *)0) },
143: { "vs", "cvvis", ((char *)0) },
144: { "dc", "dch1", ((char *)0) },
145: { "dl", "dl1", ((char *)0) },
146: { "ds", "dsl", ((char *)0) },
147: { "hd", "hd", ((char *)0) },
148: { "as", "smacs", ((char *)0) },
149: { "mb", "blink", ((char *)0) },
150: { "md", "bold", ((char *)0) },
151: { "ti", "smcup", ((char *)0) },
152: { "dm", "smdc", ((char *)0) },
153: { "mh", "dim", ((char *)0) },
154: { "im", "smir", ((char *)0) },
155: { "mk", "invis", ((char *)0) },
156: { "mp", "prot", ((char *)0) },
157: { "mr", "rev", ((char *)0) },
158: { "so", "smso", ((char *)0) },
159: { "us", "smul", ((char *)0) },
160: { "ec", "ech", ((char *)0) },
161: { "ae", "rmacs", ((char *)0) },
162: { "me", "sgr0", ((char *)0) },
163: { "te", "rmcup", ((char *)0) },
164: { "ed", "rmdc", ((char *)0) },
165: { "ei", "rmir", ((char *)0) },
166: { "se", "rmso", ((char *)0) },
167: { "ue", "rmul", ((char *)0) },
168: { "vb", "flash", ((char *)0) },
169: { "ff", "ff", ((char *)0) },
170: { "fs", "fsl", ((char *)0) },
171: { "i1", "is1", ((char *)0) },
172: { "is", "is2", ((char *)0) },
173: { "i3", "is3", ((char *)0) },
174: { "if", "if", ((char *)0) },
175: { "ic", "ich1", ((char *)0) },
176: { "il", "il1", ((char *)0) },
177: { "ip", "ip", ((char *)0) },
178: { "kb", "kbs", ((char *)0) },
179: { "ka", "ktbc", ((char *)0) },
180: { "kC", "kclr", ((char *)0) },
181: { "kt", "kctab", ((char *)0) },
182: { "kD", "kdch1", ((char *)0) },
183: { "kL", "kdl1", ((char *)0) },
184: { "kd", "kcud1", ((char *)0) },
185: { "kM", "krmir", ((char *)0) },
186: { "kE", "kel", ((char *)0) },
187: { "kS", "ked", ((char *)0) },
188: { "k0", "kf0", ((char *)0) },
189: { "k1", "kf1", ((char *)0) },
190: { "k;", "kf10", ((char *)0) },
191: { "k2", "kf2", ((char *)0) },
192: { "k3", "kf3", ((char *)0) },
193: { "k4", "kf4", ((char *)0) },
194: { "k5", "kf5", ((char *)0) },
195: { "k6", "kf6", ((char *)0) },
196: { "k7", "kf7", ((char *)0) },
197: { "k8", "kf8", ((char *)0) },
198: { "k9", "kf9", ((char *)0) },
199: { "kh", "khome", ((char *)0) },
200: { "kI", "kich1", ((char *)0) },
201: { "kA", "kil1", ((char *)0) },
202: { "kl", "kcub1", ((char *)0) },
203: { "kH", "kll", ((char *)0) },
204: { "kN", "knp", ((char *)0) },
205: { "kP", "kpp", ((char *)0) },
206: { "kr", "kcuf1", ((char *)0) },
207: { "kF", "kind", ((char *)0) },
208: { "kR", "kri", ((char *)0) },
209: { "kT", "khts", ((char *)0) },
210: { "ku", "kcuu1", ((char *)0) },
211: { "ke", "rmkx", ((char *)0) },
212: { "ks", "smkx", ((char *)0) },
213: { "l0", "lf0", ((char *)0) },
214: { "l1", "lf1", ((char *)0) },
215: { "la", "lf10", ((char *)0) },
216: { "l2", "lf2", ((char *)0) },
217: { "l3", "lf3", ((char *)0) },
218: { "l4", "lf4", ((char *)0) },
219: { "l5", "lf5", ((char *)0) },
220: { "l6", "lf6", ((char *)0) },
221: { "l7", "lf7", ((char *)0) },
222: { "l8", "lf8", ((char *)0) },
223: { "l9", "lf9", ((char *)0) },
224: { "mo", "rmm", ((char *)0) },
225: { "mm", "smm", ((char *)0) },
226: { "nw", "nel", ((char *)0) },
227: { "pc", "pad", ((char *)0) },
228: { "DC", "dch", ((char *)0) },
229: { "DL", "dl", ((char *)0) },
230: { "DO", "cud", ((char *)0) },
231: { "IC", "ich", ((char *)0) },
232: { "SF", "indn", ((char *)0) },
233: { "AL", "il", ((char *)0) },
234: { "LE", "cub", ((char *)0) },
235: { "RI", "cuf", ((char *)0) },
236: { "SR", "rin", ((char *)0) },
237: { "UP", "cuu", ((char *)0) },
238: { "pk", "pfkey", ((char *)0) },
239: { "pl", "pfloc", ((char *)0) },
240: { "px", "pfx", ((char *)0) },
241: { "ps", "mc0", ((char *)0) },
242: { "pf", "mc4", ((char *)0) },
243: { "po", "mc5", ((char *)0) },
244: { "rp", "rep", ((char *)0) },
245: { "r1", "rs1", ((char *)0) },
246: { "r2", "rs2", ((char *)0) },
247: { "r3", "rs3", ((char *)0) },
248: { "rf", "rf", ((char *)0) },
249: { "rc", "rc", ((char *)0) },
250: { "cv", "vpa", ((char *)0) },
251: { "sc", "sc", ((char *)0) },
252: { "sf", "ind", "\n" },
253: { "sr", "ri", ((char *)0) },
254: { "sa", "sgr", ((char *)0) },
255: { "st", "hts", ((char *)0) },
256: { "wi", "wind", ((char *)0) },
257: { "ta", "ht", ((char *)0) },
258: { "ts", "tsl", ((char *)0) },
259: { "uc", "uc", ((char *)0) },
260: { "hu", "hu", ((char *)0) },
261: { "iP", "iprog", ((char *)0) },
262: { "K1", "ka1", ((char *)0) },
263: { "K3", "ka3", ((char *)0) },
264: { "k2", "kb2", ((char *)0) },
265: { "K4", "kc1", ((char *)0) },
266: { "K5", "kc3", ((char *)0) },
267: { "pO", "mc5p", ((char *)0) },
268: { "rP", "rmp", ((char *)0) },
269: { "ac", "acsc", ((char *)0) },
270: { "pn", "pln", ((char *)0) },
271: { "kB", "kcbt", ((char *)0) },
272: { "SX", "smxon", ((char *)0) },
273: { "RX", "rmxon", ((char *)0) },
274: { "SA", "smam", ((char *)0) },
275: { "RA", "rmam", ((char *)0) },
276: { "XN", "xonc", ((char *)0) },
277: { "XF", "xoffc", ((char *)0) },
278: { "eA", "enacs", ((char *)0) },
279: { "LO", "smln", ((char *)0) },
280: { "LF", "rmln", ((char *)0) },
281: { "@1", "kbeg", ((char *)0) },
282: { "@2", "kcan", ((char *)0) },
283: { "@3", "kclo", ((char *)0) },
284: { "@4", "kcmd", ((char *)0) },
285: { "@5", "kcpy", ((char *)0) },
286: { "@6", "kcrt", ((char *)0) },
287: { "@7", "kend", ((char *)0) },
288: { "@8", "kent", ((char *)0) },
289: { "@9", "kext", ((char *)0) },
290: { "@0", "kfnd", ((char *)0) },
291: { "%1", "khlp", ((char *)0) },
292: { "%2", "kmrk", ((char *)0) },
293: { "%3", "kmsg", ((char *)0) },
294: { "%4", "kmov", ((char *)0) },
295: { "%5", "knxt", ((char *)0) },
296: { "%6", "kopn", ((char *)0) },
297: { "%7", "kopt", ((char *)0) },
298: { "%8", "kprv", ((char *)0) },
299: { "%9", "kprt", ((char *)0) },
300: { "0", "krdo", ((char *)0) },
301: { "&1", "kref", ((char *)0) },
302: { "&2", "krfr", ((char *)0) },
303: { "&3", "krpl", ((char *)0) },
304: { "&4", "krst", ((char *)0) },
305: { "&5", "kres", ((char *)0) },
306: { "&6", "ksav", ((char *)0) },
307: { "&7", "kspd", ((char *)0) },
308: { "&8", "kund", ((char *)0) },
309: { "&9", "kBEG", ((char *)0) },
310: { "&0", "kCAN", ((char *)0) },
311: { "*1", "kCMD", ((char *)0) },
312: { "*2", "kCPY", ((char *)0) },
313: { "*3", "kCRT", ((char *)0) },
314: { "*4", "kDC", ((char *)0) },
315: { "*5", "kDL", ((char *)0) },
316: { "*6", "kslt", ((char *)0) },
317: { "*7", "kEND", ((char *)0) },
318: { "*8", "kEOL", ((char *)0) },
319: { "*9", "kEXT", ((char *)0) },
320: { "*0", "kFND", ((char *)0) },
321: { "#1", "kHLP", ((char *)0) },
322: { "#2", "kHOM", ((char *)0) },
323: { "#3", "kIC", ((char *)0) },
324: { "#4", "kLFT", ((char *)0) },
325: { "%a", "kMSG", ((char *)0) },
326: { "%b", "kMOV", ((char *)0) },
327: { "%c", "kNXT", ((char *)0) },
328: { "%d", "kOPT", ((char *)0) },
329: { "%e", "kPRV", ((char *)0) },
330: { "%f", "kPRT", ((char *)0) },
331: { "%g", "kRDO", ((char *)0) },
332: { "%h", "kRPL", ((char *)0) },
333: { "%i", "kRIT", ((char *)0) },
334: { "%j", "kRES", ((char *)0) },
335: { "!1", "kSAV", ((char *)0) },
336: { "!2", "kSPD", ((char *)0) },
337: { "!3", "kUND", ((char *)0) },
338: { "RF", "rfi", ((char *)0) },
339: { "F1", "kf11", ((char *)0) },
340: { "F2", "kf12", ((char *)0) },
341: { "F3", "kf13", ((char *)0) },
342: { "F4", "kf14", ((char *)0) },
343: { "F5", "kf15", ((char *)0) },
344: { "F6", "kf16", ((char *)0) },
345: { "F7", "kf17", ((char *)0) },
346: { "F8", "kf18", ((char *)0) },
347: { "F9", "kf19", ((char *)0) },
348: { "FA", "kf20", ((char *)0) },
349: { "FB", "kf21", ((char *)0) },
350: { "FC", "kf22", ((char *)0) },
351: { "FD", "kf23", ((char *)0) },
352: { "FE", "kf24", ((char *)0) },
353: { "FF", "kf25", ((char *)0) },
354: { "FG", "kf26", ((char *)0) },
355: { "FH", "kf27", ((char *)0) },
356: { "FI", "kf28", ((char *)0) },
357: { "FJ", "kf29", ((char *)0) },
358: { "FK", "kf30", ((char *)0) },
359: { "FL", "kf31", ((char *)0) },
360: { "FM", "kf32", ((char *)0) },
361: { "FN", "kf33", ((char *)0) },
362: { "FO", "kf34", ((char *)0) },
363: { "FP", "kf35", ((char *)0) },
364: { "FQ", "kf36", ((char *)0) },
365: { "FR", "kf37", ((char *)0) },
366: { "FS", "kf38", ((char *)0) },
367: { "FT", "kf39", ((char *)0) },
368: { "FU", "kf40", ((char *)0) },
369: { "FV", "kf41", ((char *)0) },
370: { "FW", "kf42", ((char *)0) },
371: { "FX", "kf43", ((char *)0) },
372: { "FY", "kf44", ((char *)0) },
373: { "FZ", "kf45", ((char *)0) },
374: { "Fa", "kf46", ((char *)0) },
375: { "Fb", "kf47", ((char *)0) },
376: { "Fc", "kf48", ((char *)0) },
377: { "Fd", "kf49", ((char *)0) },
378: { "Fe", "kf50", ((char *)0) },
379: { "Ff", "kf51", ((char *)0) },
380: { "Fg", "kf52", ((char *)0) },
381: { "Fh", "kf53", ((char *)0) },
382: { "Fi", "kf54", ((char *)0) },
383: { "Fj", "kf55", ((char *)0) },
384: { "Fk", "kf56", ((char *)0) },
385: { "Fl", "kf57", ((char *)0) },
386: { "Fm", "kf58", ((char *)0) },
387: { "Fn", "kf59", ((char *)0) },
388: { "Fo", "kf60", ((char *)0) },
389: { "Fp", "kf61", ((char *)0) },
390: { "Fq", "kf62", ((char *)0) },
391: { "Fr", "kf63", ((char *)0) },
392: { "cb", "el1", ((char *)0) },
393: { "MC", "mgc", ((char *)0) },
394: { "ML", "smgl", ((char *)0) },
395: { "MR", "smgr", ((char *)0) },
396: { "Lf", "fln", ((char *)0) },
397: { "SC", "sclk", ((char *)0) },
398: { "DK", "dclk", ((char *)0) },
399: { "RC", "rmclk", ((char *)0) },
400: { "CW", "cwin", ((char *)0) },
401: { "GW", "wingo", ((char *)0) },
402: { "HU", "hup", ((char *)0) },
403: { "DI", "dial", ((char *)0) },
404: { "QD", "qdial", ((char *)0) },
405: { "TO", "tone", ((char *)0) },
406: { "PU", "pulse", ((char *)0) },
407: { "fh", "hook", ((char *)0) },
408: { "PA", "pause", ((char *)0) },
409: { "WA", "wait", ((char *)0) },
410: { "u0", "u0", ((char *)0) },
411: { "u1", "u1", ((char *)0) },
412: { "u2", "u2", ((char *)0) },
413: { "u3", "u3", ((char *)0) },
414: { "u4", "u4", ((char *)0) },
415: { "u5", "u5", ((char *)0) },
416: { "u6", "u6", ((char *)0) },
417: { "u7", "u7", ((char *)0) },
418: { "u8", "u8", ((char *)0) },
419: { "u9", "u9", ((char *)0) },
420: { "op", "op", ((char *)0) },
421: { "oc", "oc", ((char *)0) },
422: { "Ic", "initc", ((char *)0) },
423: { "Ip", "initp", ((char *)0) },
424: { "sp", "scp", ((char *)0) },
425: { "Sf", "setf", ((char *)0) },
426: { "Sb", "setb", ((char *)0) },
427: { "ZA", "cpi", ((char *)0) },
428: { "ZB", "lpi", ((char *)0) },
429: { "ZC", "chr", ((char *)0) },
430: { "ZD", "cvr", ((char *)0) },
431: { "dc", "defc", ((char *)0) },
432: { "ZF", "swidm", ((char *)0) },
433: { "ZG", "sdrfq", ((char *)0) },
434: { "ZH", "sitm", ((char *)0) },
435: { "ZI", "slm", ((char *)0) },
436: { "ZJ", "smicm", ((char *)0) },
437: { "ZK", "snlq", ((char *)0) },
438: { "ZL", "snrmq", ((char *)0) },
439: { "ZM", "sshm", ((char *)0) },
440: { "ZN", "ssubm", ((char *)0) },
441: { "ZO", "ssupm", ((char *)0) },
442: { "ZP", "sum", ((char *)0) },
443: { "ZQ", "rwidm", ((char *)0) },
444: { "ZR", "ritm", ((char *)0) },
445: { "ZS", "rlm", ((char *)0) },
446: { "ZT", "rmicm", ((char *)0) },
447: { "ZU", "rshm", ((char *)0) },
448: { "ZV", "rsubm", ((char *)0) },
449: { "ZW", "rsupm", ((char *)0) },
450: { "ZX", "rum", ((char *)0) },
451: { "ZY", "mhpa", ((char *)0) },
452: { "ZZ", "mcud1", ((char *)0) },
453: { "Za", "mcub1", ((char *)0) },
454: { "Zb", "mcuf1", ((char *)0) },
455: { "Zc", "mvpa", ((char *)0) },
456: { "Zd", "mcuu1", ((char *)0) },
457: { "Ze", "porder", ((char *)0) },
458: { "Zf", "mcud", ((char *)0) },
459: { "Zg", "mcub", ((char *)0) },
460: { "Zh", "mcuf", ((char *)0) },
461: { "Zi", "mcuu", ((char *)0) },
462: { "Zj", "scs", ((char *)0) },
463: { "Zk", "smgb", ((char *)0) },
464: { "Zl", "smgbp", ((char *)0) },
465: { "Zm", "smglp", ((char *)0) },
466: { "Zn", "smgrp", ((char *)0) },
467: { "Zo", "smgt", ((char *)0) },
468: { "Zp", "smgtp", ((char *)0) },
469: { "Zq", "sbim", ((char *)0) },
470: { "Zr", "scsd", ((char *)0) },
471: { "Zs", "rbim", ((char *)0) },
472: { "Zt", "rcsd", ((char *)0) },
473: { "Zu", "subcs", ((char *)0) },
474: { "Zv", "supcs", ((char *)0) },
475: { "Zw", "docr", ((char *)0) },
476: { "Zx", "zerom", ((char *)0) },
477: { "Zy", "csnm", ((char *)0) },
478: };
479:
480: #define MAXSTRS MAXINDEX(strcaps)
481:
482: /*
483: * print_name:
484: * print name and aliases of current termcap entry.
485: */
486: print_name ()
487: {
488: char name[100];
489:
490: tgetname (name);
491: printf ("%s,\n", name);
492: }
493:
494: /*
495: * print_bools:
496: * print all boolean fields of current termcap entry.
497: */
498: print_bools ()
499: {
500: int i, val;
501: bool stuffprinted = FALSE;
502:
503: for (i = 0; i < MAXBOOLS; i++)
504: if (val = tgetflag (boolcaps[i].capname)) {
505: if (val == 1)
506: printf ("\t%s,", boolcaps[i].infoname);
507: else
508: printf ("\t%s@,", boolcaps[i].infoname);
509: stuffprinted = TRUE;
510: }
511: if (stuffprinted)
512: (void) putchar ('\n');
513: }
514:
515: /*
516: * print_nums:
517: * print all numeric fields of current termcap entry.
518: */
519: print_nums ()
520: {
521: int i, capval;
522: bool stuffprinted = FALSE;
523:
524: for (i = 0; i < MAXNUMS; i++)
525: if ((capval = tgetnum (numcaps[i].capname)) >= 0) {
526: printf ("\t%s#%d,", numcaps[i].infoname, capval);
527: stuffprinted = TRUE;
528: }
529: else if (capval == -2) {
530: printf ("\t%s@,", numcaps[i].infoname);
531: stuffprinted = TRUE;
532: }
533: if (stuffprinted)
534: (void) putchar ('\n');
535: }
536:
537: /*
538: * print_strs:
539: * print all string fields of current termcap entry.
540: */
541: print_strs ()
542: {
543: int i, count = 0;
544: char capval[100];
545:
546: for (i = 0; i < MAXSTRS; i++) {
547: tgetstr (strcaps[i].capname, capval);
548: if (!capval[0]) {
549: if (strcmp (strcaps[i].capname, "le") == 0) {
550: tgetstr ("bc", capval);
551: }
552: else if (strcmp (strcaps[i].capname, "ta") == 0) {
553: if (tgetflag ("pt")) {
554: capval[0] = '\t';
555: capval[1] = '\0';
556: }
557: }
558: }
559: if ((!capval[0]) && (strcaps[i].dflt))
560: (void) strcpy (capval, strcaps[i].dflt);
561: if (capval[0]) {
562: if (strcmp (capval, "@") != 0) {
563: printf ("\t%s=", strcaps[i].infoname);
564: if (strcmp(strcaps[i].infoname,"use") != 0) {
565: put_str (capval);
566: printf (",");
567: }
568: else
569: printf ("%s,", capval);
570: }
571: else
572: printf ("\t%s@,", strcaps[i].infoname);
573: count++;
574: if (!(count %= 3))
575: putchar ('\n');
576: }
577: }
578: if (count)
579: (void) putchar ('\n');
580: }
581:
582: /*
583: * put_str:
584: * translate strings to printable format and print them.
585: */
586: put_str (s)
587: char *s;
588: {
589: bool rflag = FALSE; /* % codes */
590: char *c;
591: int parm;
592:
593: if ((isdigit (*s)) || (*s == '.')) { /* handle padding */
594: printf ("$<");
595: while ((isdigit (*s)) || (*s == '.')) {
596: (void) putchar (*s);
597: s++;
598: }
599: if (*s == '*') {
600: (void) putchar (*s);
601: s++;
602: }
603: (void) putchar ('>');
604: }
605: for (c = s; *c; c++) { /* scan for % codes (needs work) */
606: if (*c == '%') {
607: c++;
608: switch (*c) {
609: case 'r':
610: rflag = TRUE;
611: break;
612: default:
613: break; /* ignore */
614: }
615: }
616: }
617: parm = 0;
618: while (*s) { /* print the string */
619: switch (*s) {
620: case '%':
621: s++;
622: switch (*s) {
623: case '%':
624: printf ("%%%%");
625: break;
626: case 'i':
627: printf ("%%i");
628: break;
629: case 'd':
630: parm++;
631: if ((rflag) && (parm <= 2)) {
632: if (parm == 1)
633: printf ("%%p2%%d");
634: else
635: printf ("%%p1%%d");
636: }
637: else
638: printf ("%%p%d%%d", parm);
639: break;
640: case '2':
641: parm++;
642: if ((rflag) && (parm <= 2)) {
643: if (parm == 1)
644: printf ("%%p2%%02d");
645: else
646: printf ("%%p1%%02d");
647: }
648: else
649: printf ("%%p%d%%02d", parm);
650: break;
651: case '3':
652: parm++;
653: if ((rflag) && (parm <= 2)) {
654: if (parm == 1)
655: printf ("%%p2%%03d");
656: else
657: printf ("%%p1%%03d");
658: }
659: else
660: printf ("%%p%d%%03d", parm);
661: break;
662: case '.':
663: parm++;
664: if ((rflag) && (parm <= 2)) {
665: if (parm == 1)
666: printf ("%%p2%%c");
667: else
668: printf ("%%p1%%c");
669: }
670: else
671: printf ("%%p%d%%c", parm);
672: break;
673: case '+':
674: s++;
675: parm++;
676: if ((rflag) && (parm <= 2)) {
677: if (parm == 1)
678: printf ("%%p2%%'%c'%%+%%c", *s);
679: else
680: printf ("%%p1%%'%c'%%+%%c", *s);
681: }
682: else
683: printf ("%%p%d%%'%c'%%+%%c", parm, *s);
684: break;
685: default:
686: break; /* ignore */
687: }
688: break;
689: case '\200':
690: printf ("\\0");
691: break;
692: case '\177':
693: printf ("^?");
694: break;
695: case ',':
696: printf ("\\,");
697: break;
698: case '\\':
699: printf ("\\\\");
700: break;
701: case '^':
702: printf ("\^");
703: break;
704: case ':':
705: printf ("\\:");
706: break;
707: case '\033':
708: printf ("\\E");
709: break;
710: case '\n':
711: printf ("\\n");
712: break;
713: case '\r':
714: printf ("\\r");
715: break;
716: case '\t':
717: printf ("\\t");
718: break;
719: case '\b':
720: printf ("\\b");
721: break;
722: case '\f':
723: printf ("\\f");
724: break;
725: case ' ':
726: printf ("\\s");
727: break;
728: default:
729: if (*s < ' ')
730: printf ("^%c", *s + 'A' - 1);
731: else
732: (void) putchar (*s);
733: break;
734: }
735: s++;
736: }
737: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.