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