int main (int argc, char *argv[]) { int r; struct tm tm; time_t result; time_t now; time_t *nowp = NULL; char *argstr; int round = PARSE_TIME_NO_ROUND; char buf[1024]; const char *format = DEFAULT_FORMAT; struct option options[] = { { "help", no_argument, NULL, 'h' }, { "^", no_argument, NULL, 'u' }, { "^^", no_argument, NULL, 'U' }, { "_", no_argument, NULL, 'd' }, { "format", required_argument, NULL, 'f' }, { "ref", required_argument, NULL, 'r' }, { NULL, 0, NULL, 0 }, }; for (;;) { int c; c = getopt_long (argc, argv, "huUdf:r:", options, NULL); if (c == -1) break; switch (c) { case 'f': /* output format */ format = optarg; break; case 'u': round = PARSE_TIME_ROUND_UP_INCLUSIVE; break; case 'U': round = PARSE_TIME_ROUND_UP; break; case 'd': round = PARSE_TIME_ROUND_DOWN; break; case 'r': /* specify now in seconds since epoch */ now = (time_t) strtol (optarg, NULL, 10); if (now >= (time_t) 0) nowp = &now; break; case 'h': case '?': default: usage (argv[0]); return 1; } } if (optind == argc) return parse_stdin (stdin, nowp, round, format); argstr = concat_args (optind, argc, argv); if (!argstr) return 1; r = parse_time_string (argstr, &result, nowp, round); free (argstr); if (r) { const char *errstr = parse_time_strerror (r); if (errstr) fprintf (stderr, "ERROR: %s\n", errstr); else fprintf (stderr, "ERROR: %d\n", r); return r; } if (!localtime_r (&result, &tm)) return 1; strftime (buf, sizeof (buf), format, &tm); printf ("%s\n", buf); return 0; }
int main( int argc, char *argv[] ) { GtkWidget *vbox; gtk_init( &argc, &argv ); if( client_open( NULL ) ) exit( 1 ); atexit( client_close ); window = argc == 2 ? gtk_plug_new( strtol( argv[1], NULL, 10 )) : gtk_window_new( GTK_WINDOW_TOPLEVEL ); vbox = gtk_vbox_new( FALSE, 0 ); gtk_container_add( GTK_CONTAINER( window ), vbox ); drawing_area = gtk_drawing_area_new(); /* Get the dimensions and colors of the pager and viewport and focus */ parse_stdin(); update_rect.x = update_rect.y = 0; gtk_drawing_area_size( GTK_DRAWING_AREA( drawing_area ), width, height ); gtk_box_pack_start( GTK_BOX( vbox ), drawing_area, FALSE, FALSE, 0 ); /* Signals to quit */ g_signal_connect( GTK_OBJECT( window ), "delete_event", G_CALLBACK( delete_event ), NULL ); g_signal_connect( GTK_OBJECT( window ), "destroy", G_CALLBACK( destroy_event ), NULL ); /* Wait for input from standard input */ gdk_input_add( 0, GDK_INPUT_READ, &wait_stdin, drawing_area ); /* Change the viewport when a button is pressed */ g_signal_connect( GTK_OBJECT( drawing_area ), "motion_notify_event", (GCallback) motion_notify_event, NULL ); g_signal_connect( GTK_OBJECT( drawing_area ), "button_press_event", (GCallback) button_press_event, NULL ); g_signal_connect( GTK_OBJECT( drawing_area ), "button_release_event", (GCallback) button_release_event, NULL ); g_signal_connect( GTK_OBJECT( drawing_area ), "leave_notify_event", (GCallback) leave_notify_event, NULL ); g_signal_connect ( GTK_OBJECT( drawing_area), "scroll_event", (GCallback) scroll_event, NULL ); gtk_widget_set_events( drawing_area, GDK_EXPOSURE_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_SCROLL_MASK ); /* Initialize and draw the pixmap */ g_signal_connect( GTK_OBJECT( drawing_area ), "expose_event", (GCallback) expose_event, NULL ); g_signal_connect( GTK_OBJECT( drawing_area ), "configure_event", (GCallback) configure_event, NULL ); gtk_widget_show( drawing_area ); gtk_widget_show( vbox ); wmspec_change_state(TRUE, window->window, gdk_atom_intern( "_NET_WM_STATE_SKIP_PAGER", FALSE ), gdk_atom_intern( "_NET_WM_STATE_SKIP_TASKBAR", FALSE )); gtk_window_set_type_hint( GTK_WINDOW(window), GDK_WINDOW_TYPE_HINT_DOCK); gtk_widget_show( window ); gtk_main(); return 0; }