]> icculus.org git repositories - duncan/yast2-qt4.git/blob - testsuite/runqt.cc
don't create QObjects in ycp thread - make timeouts work
[duncan/yast2-qt4.git] / testsuite / runqt.cc
1 /*---------------------------------------------------------------------\
2 |                                                                      |  
3 |                      __   __    ____ _____ ____                      |  
4 |                      \ \ / /_ _/ ___|_   _|___ \                     |  
5 |                       \ V / _` \___ \ | |   __) |                    |  
6 |                        | | (_| |___) || |  / __/                     |  
7 |                        |_|\__,_|____/ |_| |_____|                    |  
8 |                                                                      |  
9 |                               core system                            | 
10 |                                                        (C) SuSE GmbH |  
11 \----------------------------------------------------------------------/ 
12
13    File:       runqt.cc
14
15    Author:     Klaus Kaempf (kkaempf@suse.de)
16    Maintainer: Klaus Kaempf (kkaempf@suse.de)
17
18 /-*/
19
20 #include <stdio.h>
21
22 #include "YUIQt.h"
23
24 #include <ycp/YCPParser.h>
25 #include <yui/YUIInterpreter.h>
26 #include <ycp/y2log.h>
27
28 extern int yydebug;
29
30 int
31 main (int argc, char *argv[])
32 {
33     const char *fname = 0;
34     FILE *infile = stdin;
35
36     if (argc > 1) {
37         int argp = 1;
38         while (argp < argc) {
39             if ((argv[argp][0] == '-')
40                 && (argv[argp][1] == 'l')
41                 && (argp+1 < argc)) {
42                 argp++;
43                 set_log_filename (argv[argp]);
44             }
45             else if (fname == 0) {
46                 fname = argv[argp];
47             } else {
48                 fprintf (stderr, "Bad argument '%s'\nUsage: runqt [ name.ycp ]\n", argv[argp]);
49             }
50             argp++;
51         }
52     }
53
54     YCPParser *parser;
55     parser = new YCPParser ();
56
57     if (!parser) {
58         fprintf (stderr, "Failed to create YCPParser\n");
59         return 1;
60     }
61
62     YUIInterpreter *interpreter;
63     interpreter = new YUIQt (argc, argv, true, NULL);
64
65     if (!interpreter) {
66         fprintf (stderr, "Failed to create YUIQt\n");
67         delete parser;
68         return 1;
69     }
70
71     if (fname != 0) {
72         infile = fopen (fname, "r");
73         if (infile == 0) {
74             fprintf (stderr, "Failed to open '%s'\n", fname);
75             return 1;
76         }
77     }
78     else {
79         fname = "stdin";
80     }
81
82     parser->setInput (infile, fname);
83     parser->setBuffered();
84
85     YCPValue value = YCPVoid();
86
87     for (;;) {
88         value = parser->parse();
89         if (value.isNull())
90             break;
91
92         value = interpreter->evaluate(value);
93
94         printf ("(%s)\n", value->toString().c_str());
95     }
96
97     delete interpreter;
98     delete parser;
99
100     if (infile != stdin)
101         fclose (infile);
102
103     return 0;
104 }