3010e0e9ea440cdfa5cd724169b3f6e4f4f85bc0
[pinentry.git] / qt / main.cpp
1 /* main.cpp - Secure KDE dialog for PIN entry.
2    Copyright (C) 2002 Klarälvdalens Datakonsult AB
3    Written by Steffen Hansen <steffen@klaralvdalens-datakonsult.se>.
4    
5    This program is free software; you can redistribute it and/or
6    modify it under the terms of the GNU General Public License as
7    published by the Free Software Foundation; either version 2 of the
8    License, or (at your option) any later version.
9  
10    This program is distributed in the hope that it will be useful, but
11    WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    General Public License for more details.
14  
15    You should have received a copy of the GNU General Public License
16    along with this program; if not, write to the Free Software
17    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
18    02111-1307, USA  */
19
20 extern "C"
21 {
22 #include "memory.h"
23 #include "secmem-util.h"
24 }
25
26 #include <new>
27
28 #ifdef USE_KDE
29 # include <kapp.h>
30 # include <kcmdlineargs.h>
31 # include <kaboutdata.h>
32 # include <klocale.h>
33 #else
34 # include <qapplication.h>
35 #endif // USE_KDE
36
37 #include "pinentrydialog.h"
38 #include "pinentrycontroller.h"
39
40 extern "C++" {
41   extern bool is_secure;
42 };
43
44 #define VERSION "0.1"
45
46 #ifdef USE_KDE
47 static const char *description =
48         I18N_NOOP("Pinentry");
49 // INSERT A DESCRIPTION FOR YOUR APPLICATION HERE
50  
51  
52 static KCmdLineOptions options[] =
53 {
54   { 0, 0, 0 }
55   // INSERT YOUR COMMANDLINE OPTIONS HERE
56 };
57 #endif // USE_KDE
58
59 void my_new_handler()
60 {
61   secmem_term();
62   qFatal("Out of memory!");
63 }
64
65 int main( int argc, char** argv ) 
66 {
67   secmem_init( 16384*8 );
68   secmem_set_flags(SECMEM_WARN);
69   drop_privs();
70   set_new_handler(my_new_handler);
71   try {
72 #ifdef USE_KDE
73     KAboutData aboutData( "pinentry", I18N_NOOP("Pinentry"),
74                           VERSION, description, KAboutData::License_GPL,
75                           "(c) 2001, Steffen Hansen, Klarälvdalens Datakonsult AB", 0, 0, "klaralvdalens-datakonsult.se");
76     aboutData.addAuthor("Steffen Hansen, Klarälvdalens Datakonsult AB",0, "steffen@klaralvdalens-datakonsult.se");
77     KCmdLineArgs::init( argc, argv, &aboutData );
78     KCmdLineArgs::addCmdLineOptions( options ); // Add our own options.
79     KApplication app;
80 #else
81     QApplication app( argc, argv );
82 #endif // USE_KDE
83     is_secure = true;
84
85     PinEntryController ctrl;
86     ctrl.exec();
87     return 0;
88   } catch( std::bad_alloc& ex ) {
89     qDebug("Out of memory, got a %s", ex.what());
90   }
91 }