*** empty log message ***
[m17n/m17n-test.git] / viewfile.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <sys/types.h>
4 #include <sys/stat.h>
5 #include <unistd.h>
6 #include <string.h>
7 #include <gtk/gtk.h>
8
9 static void
10 destroy (GtkWidget *widget, gpointer data)
11 {
12   gtk_main_quit ();
13 }
14
15 int
16 main (int argc, char **argv)
17 {
18   FILE *fp;
19   struct stat statbuf;
20   unsigned char *buf;
21   size_t nbytes;
22   GtkWidget *window, *view;
23   GtkTextBuffer *buffer;
24
25   if (argc < 2)
26     {
27       fprintf (stderr, "Usage: viewfile FILENAME\n");
28       exit (1);
29     }
30   if (stat (argv[1], &statbuf) != 0
31       || ! (fp = fopen (argv[1], "r")))
32     {
33       fprintf (stderr, "Can't open \"%s\"\n", argv[1]);
34       exit (1);
35     }
36   buf = alloca (statbuf.st_size);
37   fread (buf, 1, statbuf.st_size, fp);
38   fclose (fp);
39
40   gtk_init (&argc, &argv);
41   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
42   g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy), NULL);
43   view = gtk_text_view_new ();
44   buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
45   gtk_text_buffer_set_text (buffer, (gchar *) buf, statbuf.st_size);
46   gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view), FALSE);
47   gtk_container_add (GTK_CONTAINER (window), view);
48   gtk_widget_show_all (window);
49   gtk_main ();
50
51   return 0;
52 }