summaryrefslogtreecommitdiff
path: root/core/apps/qcop/main.cpp
blob: 9306cbf62399ab5669af1a890a7293b3ce96e8f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/**********************************************************************
** Copyright (C) 2000 Trolltech AS.  All rights reserved.
**
** This file is part of Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/

#include <qpe/qcopenvelope_qws.h>

#include <qapplication.h>
#include <qtimer.h>

#include <stdlib.h>
#include <stdio.h>

static void usage()
{
    fprintf( stderr, "Usage: qcop channel command [parameters]\n" );
}

static void syntax( const QString &where, const QString &what )
{
    fprintf( stderr, "Syntax error in %s: %s\n", where.latin1(), what.latin1() );
    exit(1);
}

int main( int argc, char *argv[] )
{
    QApplication app( argc, argv );

    if ( argc < 3 ) {
	usage();
	exit(1);
    }

    QString channel = argv[1];
    QString command = argv[2];
    command.stripWhiteSpace();

    int paren = command.find( "(" );
    if ( paren <= 0 )
	syntax( "command", command );

    QString params = command.mid( paren + 1 );
    if ( params[params.length()-1] != ')' )
	syntax( "command", command );

    params.truncate( params.length()-1 );
    QCopEnvelope env(channel.latin1(), command.latin1());

    int argIdx = 3;

    QStringList paramList = QStringList::split( ",", params );
    QStringList::Iterator it;
    for ( it = paramList.begin(); it != paramList.end(); ++it ) {
	QString arg = argv[argIdx];
	if ( *it == "QString" ) {
	    env << arg;
	} else if ( *it == "int" ) {
	    env << arg.toInt();
	} else {
	    syntax( "paramter type", *it );
	}
	argIdx++;
    }

    QTimer::singleShot( 0, &app, SLOT(quit()) );
    return app.exec();
}