1 /* Copyright (C) 1993, 1992 Nathan Sidwell */
2 /* RCS $Id: xmred.c,v 4.12 1995/12/14 13:53:27 nathan Exp $ */
3 /*{{{  include*/
4 #include "xmred.h"
5 #ifdef SCROLLBARBUGFIX
6 #include <X11/Xaw/Scrollbar.h>
7 #endif
8 /*}}}*/
9 /*{{{  prototypes*/
10 static int xio_error PROTOARG((Display *));
11 /*}}}*/
12 /*{{{  size_t itoa(text, n, width)*/
13 extern size_t itoa
14 FUNCARG((text, number, digits),
15 	char      *text    /* output text (include 0) */
16 ARGSEP  unsigned long number   /* number to convert */
17 ARGSEP  unsigned  digits   /* field width to convert into */
18 )
19 /*
20  * formats an integer to a string
21  * in the specified number of digits
22  * pads leading zeros to ' '
23  * returns the number of characters used
24  */
25 {
26   char      reverse[10];
27   size_t    l, length;
28 
29   l = 0;
30   do
31     {
32       reverse[l++] = (char)(number % 10 + '0');
33       number /= 10;
34     }
35   while(number);
36   if(!digits)
37     length = 0;
38   else if(l < digits)
39     {
40       length = digits - l;
41       memset(text, ' ', length);
42     }
43   else
44     {
45       length = 0;
46       l = digits;
47     }
48   while(l)
49     text[length++] = reverse[--l];
50   text[length] = 0;
51   return length;
52 }
53 /*}}}*/
54 /*{{{  int main(argc, argv)*/
55 extern int main
56 FUNCARG((argc, argv),
57 	int     argc
58 ARGSEP  char CONST **argv
59 )
60 {
61   myname = *argv ? *argv : "xmred";
62   open_toolkit((Cardinal)argc, (String *)argv);
63   /*{{{  help?*/
64   if(data.help)
65     {
66       char CONST *ptr;
67 
68       ptr = myname;
69       for(ptr += strlen(ptr) - 1; ptr != *argv; ptr--)
70 	if(ptr[-1] == '/')
71 	  break;
72       list_help(ptr);
73       return 0;
74     }
75   /*}}}*/
76 #ifndef NDEBUG
77   XSetErrorHandler(error_handler);
78 #endif /* NDEBUG */
79   XSetIOErrorHandler(xio_error);
80   create_widget();
81   XtRealizeWidget(display.toplevel);
82 #ifdef SCROLLBARBUGFIX
83   nadger_widget_colors(display.toplevel, scrollbarWidgetClass);
84 #endif
85 #ifdef DEBUGEVENTLOOP
86   printf("Toplevel is 0x%lx\n", XtWindow(display.toplevel));
87 #endif /* DEBUGEVENTLOOP */
88 #ifdef DEBUGEVENTLOOP
89   while(1)
90     {
91       XEvent event;
92 
93       XtAppNextEvent(display.context, &event);
94       fprintf(stderr, "Event %lu, Window 0x%lx\n",
95 	  (long)event.xany.type, (long)event.xany.window);
96       XtDispatchEvent(&event);
97     }
98 #else
99   XtAppMainLoop(display.context);
100 #endif /* DEBUGEVENTLOOP */
101   return 0;
102 }
103 /*}}}*/
104 /*{{{  int xio_error(dptr)*/
105 static int xio_error
106 /* ARGSUSED */
107 FUNCARG((dptr),
108 	Display *dptr
109 )
110 {
111   exit(0);
112   return 0;
113 }
114 /*}}}*/
115