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