ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/cal/cnt.c
Revision: 1.1
Committed: Sat Feb 22 02:07:20 2003 UTC (21 years, 7 months ago) by greg
Content type: text/plain
Branch: MAIN
CVS Tags: rad3R5
Log Message:
Changes and check-in for 3.5 release
Includes new source files and modifications not recorded for many years
See ray/doc/notes/ReleaseNotes for notes between 3.1 and 3.5 release

File Contents

# Content
1 #ifndef lint
2 static const char RCSid[] = "$Id$";
3 #endif
4 /*
5 * cnt.c - simple counting program.
6 *
7 * 2/1/88
8 */
9
10 #include <stdio.h>
11
12
13 int n[50];
14 char buf[256];
15
16
17 main(argc, argv)
18 int argc;
19 char *argv[];
20 {
21 int a;
22
23 argv++; argc--;
24 for (a = 0; a < argc; a++)
25 n[a] = atoi(argv[a]);
26 n[a] = 0;
27 loop(n, buf);
28
29 exit(0);
30 }
31
32
33 char *
34 tack(b, i)
35 register char *b;
36 register int i;
37 {
38 register char *cp;
39 char *res;
40
41 *b++ = '\t';
42 cp = b;
43 if (i == 0)
44 *cp++ = '0';
45 else
46 do {
47 *cp++ = i%10 + '0';
48 i /= 10;
49 } while (i);
50 res = cp--;
51 #define c i
52 while (cp > b) { /* reverse string */
53 c = *cp;
54 *cp-- = *b;
55 *b++ = c;
56 }
57 #undef c
58 return(res);
59 }
60
61
62 loop(n, b)
63 int *n;
64 char *b;
65 {
66 int i;
67
68 if (n[0] == 0) {
69 *b = '\0';
70 puts(buf);
71 return;
72 }
73 for (i = 0; i < n[0]; i++)
74 loop(n+1, tack(b, i));
75 }