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