1 /*
2
3 * Copyright (c) 1984, 1985, 1986 AT&T
4 * All Rights Reserved
5
6 * THIS IS UNPUBLISHED PROPRIETARY SOURCE
7 * CODE OF AT&T.
8 * The copyright notice above does not
9 * evidence any actual or intended
10 * publication of such source code.
11
12 */
13 /* @(#)rjust.c 1.1 */
14
15 /*
16 * RJUST.C
17 *
18 * Programmer: D. G. Korn
19 *
20 * Owner: D. A. Lambeth
21 *
22 * Date: April 17, 1980
23 *
24 *
25 *
26 * RJUST (STR, SIZE, FILL)
27 *
28 * Right-justify STR so that it contains no more than
29 * SIZE non-blank characters. If necessary, pad with
30 * the character FILL.
31 *
32 *
33 *
34 * See Also:
35 */
36
37 #ifdef KSHELL
38 #include "shtype.h"
39 #else
40 #include <ctype.h>
41 #endif /* KSHELL */
42
43 /*
44 * RJUST (STR, SIZE, FILL)
45 *
46 * char *STR;
47 *
48 * int SIZE;
49 *
50 * char FILL;
51 *
52 * Right-justify STR so that it contains no more than
53 * SIZE characters. If STR contains fewer than SIZE
54 * characters, left-pad with FILL. Trailing blanks
55 * in STR will be ignored.
56 *
57 * If the leftmost digit in STR is not a digit, FILL
58 * will default to a blank.
59 */
60
rjust(str,size,fill)61 void rjust(str,size,fill)
62 char *str,fill;
63 int size;
64 {
65 register int n;
66 register char *cp,*sp;
67 n = strlen(str);
68
69 /* ignore trailing blanks */
70
71 for(cp=str+n;n && *--cp == ' ';n--);
72 if (n == size) return;
73 if(n > size)
74 {
75 *(str+n) = 0;
76 for (sp = str, cp = str+n-size; sp <= str+size; *sp++ = *cp++);
77 return;
78 }
79 else *(sp = str+size) = 0;
80 if (n == 0)
81 {
82 while (sp > str)
83 *--sp = ' ';
84 return;
85 }
86 while(n--)
87 *--sp = *cp--;
88 if(!isdigit(*str))
89 fill = ' ';
90 while(sp>str)
91 *--sp = fill;
92 return;
93 }
94
95