summaryrefslogtreecommitdiff
path: root/x11
Unidiff
Diffstat (limited to 'x11') (more/less context) (show whitespace changes)
-rw-r--r--x11/ipc/client/ocopclient.cpp4
-rw-r--r--x11/ipc/server/ocopserver.cpp10
-rw-r--r--x11/ipc/server/ocopserver.pro1
3 files changed, 9 insertions, 6 deletions
diff --git a/x11/ipc/client/ocopclient.cpp b/x11/ipc/client/ocopclient.cpp
index ac6e4a3..c1def73 100644
--- a/x11/ipc/client/ocopclient.cpp
+++ b/x11/ipc/client/ocopclient.cpp
@@ -62,89 +62,89 @@ void OCOPClient::init( const QCString& ) {
62 */ 62 */
63void OCOPClient::newData() { 63void OCOPClient::newData() {
64 OCOPPacket pack = packet(); 64 OCOPPacket pack = packet();
65 if ( pack.channel().isEmpty() ) 65 if ( pack.channel().isEmpty() )
66 return; 66 return;
67 67
68 switch( pack.type() ) { 68 switch( pack.type() ) {
69 case OCOPPacket::Register: 69 case OCOPPacket::Register:
70 case OCOPPacket::Unregister: 70 case OCOPPacket::Unregister:
71 case OCOPPacket::Method: 71 case OCOPPacket::Method:
72 case OCOPPacket::RegisterChannel: 72 case OCOPPacket::RegisterChannel:
73 case OCOPPacket::UnregisterChannel: 73 case OCOPPacket::UnregisterChannel:
74 case OCOPPacket::Return: 74 case OCOPPacket::Return:
75 case OCOPPacket::Signal: 75 case OCOPPacket::Signal:
76 /* is Registered should be handled sync */ 76 /* is Registered should be handled sync */
77 case OCOPPacket::IsRegistered: 77 case OCOPPacket::IsRegistered:
78 break; 78 break;
79 /* emit the signal */ 79 /* emit the signal */
80 case OCOPPacket::Call: 80 case OCOPPacket::Call:
81 emit called( pack.channel(), pack.header(), pack.content() ); 81 emit called( pack.channel(), pack.header(), pack.content() );
82 break; 82 break;
83 } 83 }
84} 84}
85OCOPPacket OCOPClient::packet() const{ 85OCOPPacket OCOPClient::packet() const{
86 QCString chan; 86 QCString chan;
87 QCString func; 87 QCString func;
88 QByteArray ar; 88 QByteArray ar;
89 OCOPHead head; 89 OCOPHead head;
90 memset(&head, 0, sizeof(head) ); 90 memset(&head, 0, sizeof(head) );
91 read(m_socket, &head, sizeof(head) ); 91 read(m_socket, &head, sizeof(head) );
92 if ( head.magic == 47 ) { 92 if ( head.magic == 47 ) {
93 read(m_socket, chan.data(), head.chlen ); 93 read(m_socket, chan.data(), head.chlen );
94 read(m_socket, func.data(), head.funclen ); 94 read(m_socket, func.data(), head.funclen );
95 read(m_socket, ar.data(), head.datalen ); 95 read(m_socket, ar.data(), head.datalen );
96 } 96 }
97 OCOPPacket pack(head.type, chan, func, ar ); 97 OCOPPacket pack(head.type, chan, func, ar );
98 return pack; 98 return pack;
99} 99}
100/* 100/*
101 * we've blocking IO here on these sockets 101 * we've blocking IO here on these sockets
102 * so we send and go on read 102 * so we send and go on read
103 * this will be blocked 103 * this will be blocked
104 */ 104 */
105bool OCOPClient::isRegistered( const QCString& chan ) const{ 105bool OCOPClient::isRegistered( const QCString& chan ) const{
106 /* should I disconnect the socket notfier? */ 106 /* should I disconnect the socket notfier? */
107 OCOPPacket packe(OCOPPacket::IsRegistered, chan ); 107 OCOPPacket packe(OCOPPacket::IsRegistered, chan );
108 OCOPHead head = packe.head(); 108 OCOPHead head = packe.head();
109 write(m_socket, &head, sizeof(head) ); 109 write(m_socket, &head, sizeof(head) );
110 110 write(m_socket, chan.data(), chan.size() );
111 /* block */ 111 /* block */
112 OCOPPacket pack = packet(); 112 OCOPPacket pack = packet();
113 113
114 /* connect here again */ 114 /* connect here again */
115 if ( pack.channel() == chan ) { 115 if ( pack.channel() == chan ) {
116 QCString func = pack.header(); 116 QCString func = pack.header();
117 if (func[0] == 1 ) 117 if (func[0] == 1 )
118 return true; 118 return true;
119 } 119 }
120 120
121 return false; 121 return false;
122}; 122};
123void OCOPClient::send( const QCString& chan, const QCString& fu, const QByteArray& arr ) { 123void OCOPClient::send( const QCString& chan, const QCString& fu, const QByteArray& arr ) {
124 OCOPPacket pack(OCOPPacket::Call, chan, fu, arr ); 124 OCOPPacket pack(OCOPPacket::Call, chan, fu, arr );
125 call( pack ); 125 call( pack );
126} 126}
127void OCOPClient::addChannel(const QCString& channel) { 127void OCOPClient::addChannel(const QCString& channel) {
128 OCOPPacket pack(OCOPPacket::RegisterChannel, channel ); 128 OCOPPacket pack(OCOPPacket::RegisterChannel, channel );
129 call( pack ); 129 call( pack );
130} 130}
131void OCOPClient::delChannel(const QCString& chan ) { 131void OCOPClient::delChannel(const QCString& chan ) {
132 OCOPPacket pack(OCOPPacket::UnregisterChannel, chan ); 132 OCOPPacket pack(OCOPPacket::UnregisterChannel, chan );
133 call( pack ); 133 call( pack );
134} 134}
135void OCOPClient::call( const OCOPPacket& pack ) { 135void OCOPClient::call( const OCOPPacket& pack ) {
136 OCOPHead head = pack.head(); 136 OCOPHead head = pack.head();
137 write(m_socket, &head, sizeof(head) ); 137 write(m_socket, &head, sizeof(head) );
138 write(m_socket, pack.channel().data(), pack.channel().size() ); 138 write(m_socket, pack.channel().data(), pack.channel().size() );
139 write(m_socket, pack.header().data(), pack.header().size() ); 139 write(m_socket, pack.header().data(), pack.header().size() );
140 write(m_socket, pack.content().data(), pack.content().size() ); 140 write(m_socket, pack.content().data(), pack.content().size() );
141} 141}
142void OCOPClient::startUP() { 142void OCOPClient::startUP() {
143 qWarning("Start me up"); 143 qWarning("Start me up");
144 pid_t pi = fork(); 144 pid_t pi = fork();
145 if ( pi == 0 ) { 145 if ( pi == 0 ) {
146 setsid(); 146 setsid();
147 execlp("opie-ipc", "opie-ipc", NULL ); 147 execlp("ocopserver", "ocopserver", NULL );
148 _exit(1); 148 _exit(1);
149 } 149 }
150} 150}
diff --git a/x11/ipc/server/ocopserver.cpp b/x11/ipc/server/ocopserver.cpp
index e76657e..421e49c 100644
--- a/x11/ipc/server/ocopserver.cpp
+++ b/x11/ipc/server/ocopserver.cpp
@@ -89,139 +89,139 @@ void OCopServer::initSocket() {
89 * which will us notify on reads 89 * which will us notify on reads
90 * and errors 90 * and errors
91 * we do this because they integrate 91 * we do this because they integrate
92 * nicely into the QApplication eventloop 92 * nicely into the QApplication eventloop
93 */ 93 */
94 m_server = new QSocketNotifier(m_serverfd, QSocketNotifier::Read, this ); 94 m_server = new QSocketNotifier(m_serverfd, QSocketNotifier::Read, this );
95 connect( m_server, SIGNAL(activated(int) ), 95 connect( m_server, SIGNAL(activated(int) ),
96 this, SLOT(newOnServer() ) ); 96 this, SLOT(newOnServer() ) );
97 97
98 m_serverError = new QSocketNotifier( m_serverfd, QSocketNotifier::Exception, this); 98 m_serverError = new QSocketNotifier( m_serverfd, QSocketNotifier::Exception, this);
99 connect(m_serverError, SIGNAL(activated(int) ), 99 connect(m_serverError, SIGNAL(activated(int) ),
100 this, SLOT(errorOnServer() ) ); 100 this, SLOT(errorOnServer() ) );
101 101
102 qWarning("done with registering"); 102 qWarning("done with registering");
103} 103}
104/** 104/**
105 * we got the possibility to read 105 * we got the possibility to read
106 * on the server 106 * on the server
107 * this is mostly due a connect 107 * this is mostly due a connect
108 * on a client side 108 * on a client side
109 * we will accept it 109 * we will accept it
110 * add it to our list 110 * add it to our list
111 */ 111 */
112void OCopServer::newOnServer() { 112void OCopServer::newOnServer() {
113 int fd = accept(); 113 int fd = accept();
114 if ( fd < 0 ) 114 if ( fd < 0 )
115 return; 115 return;
116 116
117 /* 117 /*
118 * we got a successfull new connection 118 * we got a successfull new connection
119 * be happy 119 * be happy
120 * set SocketNotifier 120 * set SocketNotifier
121 * connect it 121 * connect it
122 * and a OCOPClient 122 * and a OCOPClient
123 */ 123 */
124 qWarning("Heureka new connection %d", fd ); 124 qWarning("Heureka new connection %d", fd );
125 125
126 126
127 registerClient( fd ); 127 registerClient( fd );
128} 128}
129int OCopServer::accept() { 129int OCopServer::accept() {
130 /* 130 /*
131 * accept it 131 * accept it
132 * the socket is currently blocking IIRC 132 * the socket is currently blocking IIRC
133 */ 133 */
134 return ::accept( m_serverfd, (struct sockaddr*)&m_address, &m_adrlaenge ); 134 return ::accept( m_serverfd, (struct sockaddr*)&m_address, &m_adrlaenge );
135} 135}
136void OCopServer::newOnClient( int fd ) { 136void OCopServer::newOnClient( int fd ) {
137 int bug[4096];
138 //qWarning("new stuff for client on fd %d", fd );
139 errno = 0; 137 errno = 0;
140 OCOPHead head; 138 OCOPHead head;
141 memset(&head, 0, sizeof(head) ); 139 memset(&head, 0, sizeof(head) );
142 int rea = ::read(fd, &head, sizeof(head) ); 140 int rea = ::read(fd, &head, sizeof(head) );
143 //qWarning("read %d %d", rea, errno); 141 //qWarning("read %d %d", rea, errno);
144 /* 142 /*
145 * I should get EPIPE but nothing like this happens 143 * I should get EPIPE but nothing like this happens
146 * so if rea == 0 and we were signaled by the notifier 144 * so if rea == 0 and we were signaled by the notifier
147 * we close it and drop the clients... 145 * we close it and drop the clients...
148 */ 146 */
149 if ( rea <= 0 ) { 147 if ( rea <= 0 ) {
150 deregisterClient( fd ); 148 deregisterClient( fd );
151 return; 149 return;
152 } 150 }
153 /* 151 /*
154 * OCOPHead 152 * OCOPHead
155 */ 153 */
156 qWarning("data %s %d", bug, rea ); 154 //qWarning("data %s %d", &bug, rea );
157 155
158 /* 156 /*
159 * Check the magic 157 * Check the magic
160 * if chcked read till EOF if magic does not match 158 * if chcked read till EOF if magic does not match
161 * otherwise do read 159 * otherwise do read
162 * channel 160 * channel
163 * func 161 * func
164 * data into mem 162 * data into mem
165 * and then send the OCOPPacket 163 * and then send the OCOPPacket
166 * 164 *
167 */ 165 */
168 if (head.magic == 47 ) { 166 if (head.magic == 47 ) {
169 qWarning("magic match"); 167 qWarning("magic match");
170 QCString channel( head.chlen+1 ); 168 QCString channel( head.chlen+1 );
171 QCString func( head.funclen+1 ); 169 QCString func( head.funclen+1 );
172 QByteArray data ( head.datalen ); 170 QByteArray data ( head.datalen );
173 171
174 /* 172 /*
175 * we do not check for errors 173 * we do not check for errors
176 */ 174 */
175 qWarning("read ");
177 int s = read(fd, channel.data(), head.chlen ); 176 int s = read(fd, channel.data(), head.chlen );
178 s = read(fd, func.data(), head.funclen ); 177 s = read(fd, func.data(), head.funclen );
179 s = read(fd, data.data(), head.datalen ); 178 s = read(fd, data.data(), head.datalen );
179 qWarning("read");
180 180
181 /* debug output */ 181 /* debug output */
182 qWarning("channel %s %d", channel.data(), head.chlen ); 182 qWarning("channel %s %d", channel.data(), head.chlen );
183 qWarning("func %s %d", func.data(), head.funclen ); 183 qWarning("func %s %d", func.data(), head.funclen );
184 /* debug end */ 184 /* debug end */
185 185
186 /* 186 /*
187 * now that we got the complete body 187 * now that we got the complete body
188 * we need to make a package 188 * we need to make a package
189 * and then we need to send it to clients 189 * and then we need to send it to clients
190 * making a package is done here 190 * making a package is done here
191 * dispatching it not 191 * dispatching it not
192 */ 192 */
193 OCOPPacket packet( head.type, channel, func, data ); 193 OCOPPacket packet( head.type, channel, func, data );
194 dispatch( packet, fd ); 194 dispatch( packet, fd );
195 195
196 }else{ 196 }else{
197 qWarning("magic does not match"); 197 qWarning("magic does not match");
198 qWarning("magic %d", head.magic ); 198 qWarning("magic %d", head.magic );
199 } 199 }
200} 200}
201void OCopServer::registerClient( int fd ) { 201void OCopServer::registerClient( int fd ) {
202 if (m_clients.contains(fd) ) 202 if (m_clients.contains(fd) )
203 return; 203 return;
204 204
205 QSocketNotifier* notify = new QSocketNotifier(fd, QSocketNotifier::Read, this ); 205 QSocketNotifier* notify = new QSocketNotifier(fd, QSocketNotifier::Read, this );
206 connect(notify, SIGNAL(activated(int) ), 206 connect(notify, SIGNAL(activated(int) ),
207 this, SLOT(newOnClient(int) ) ); 207 this, SLOT(newOnClient(int) ) );
208 OCOPClient client; 208 OCOPClient client;
209 client.fd = fd; 209 client.fd = fd;
210 client.notify = notify; 210 client.notify = notify;
211 m_clients.insert( client.fd, client ); 211 m_clients.insert( client.fd, client );
212 qWarning("clients are up to %d", m_clients.count() ); 212 qWarning("clients are up to %d", m_clients.count() );
213}; 213};
214void OCopServer::deregisterClient(int fd ) { 214void OCopServer::deregisterClient(int fd ) {
215 QMap<int, OCOPClient>::Iterator it = m_clients.find( fd ); 215 QMap<int, OCOPClient>::Iterator it = m_clients.find( fd );
216 if (it != m_clients.end() ) { 216 if (it != m_clients.end() ) {
217 OCOPClient client = (*it); 217 OCOPClient client = (*it);
218 delete client.notify; 218 delete client.notify;
219 m_clients.remove(fd ); 219 m_clients.remove(fd );
220 close(fd ); 220 close(fd );
221 /* 221 /*
222 * TIME_ME 222 * TIME_ME
223 * 223 *
224 * now delete from all channels 224 * now delete from all channels
225 * go through all channels 225 * go through all channels
226 * remove the fd from the list 226 * remove the fd from the list
227 * if count becomes 0 remove the channel 227 * if count becomes 0 remove the channel
@@ -240,145 +240,147 @@ void OCopServer::deregisterClient(int fd ) {
240 */ 240 */
241 if ( array.count() == 1 ) { 241 if ( array.count() == 1 ) {
242 /* is the list now invalidatet? */ 242 /* is the list now invalidatet? */
243 m_channels.remove( it ); 243 m_channels.remove( it );
244 }else{ 244 }else{
245 array.remove( fd ); 245 array.remove( fd );
246 it = m_channels.replace( it.key(), array ); 246 it = m_channels.replace( it.key(), array );
247 } 247 }
248 } 248 }
249 } // off all channels 249 } // off all channels
250 } 250 }
251 qWarning("clients are now at %d", m_clients.count() ); 251 qWarning("clients are now at %d", m_clients.count() );
252}; 252};
253/** 253/**
254 * this function will evaluate 254 * this function will evaluate
255 * the package and then do the appropriate thins 255 * the package and then do the appropriate thins
256 */ 256 */
257void OCopServer::dispatch( const OCOPPacket& packet, int sourceFD ) { 257void OCopServer::dispatch( const OCOPPacket& packet, int sourceFD ) {
258 qWarning("packet.type() == %d", packet.type() ); 258 qWarning("packet.type() == %d", packet.type() );
259 switch( packet.type() ) { 259 switch( packet.type() ) {
260 case OCOPPacket::Register: 260 case OCOPPacket::Register:
261 registerClient(sourceFD ); 261 registerClient(sourceFD );
262 break; 262 break;
263 case OCOPPacket::Unregister: 263 case OCOPPacket::Unregister:
264 deregisterClient(sourceFD ); 264 deregisterClient(sourceFD );
265 break; 265 break;
266 case OCOPPacket::Call: 266 case OCOPPacket::Call:
267 call( packet, sourceFD ); 267 call( packet, sourceFD );
268 break; 268 break;
269 /* not implemented */ 269 /* not implemented */
270 case OCOPPacket::Method: 270 case OCOPPacket::Method:
271 break; 271 break;
272 /* nit implemented */ 272 /* nit implemented */
273 case OCOPPacket::Reply: 273 case OCOPPacket::Reply:
274 break; 274 break;
275 case OCOPPacket::RegisterChannel: 275 case OCOPPacket::RegisterChannel:
276 addChannel( packet.channel() , sourceFD ); 276 addChannel( packet.channel() , sourceFD );
277 break; 277 break;
278 case OCOPPacket::UnregisterChannel: 278 case OCOPPacket::UnregisterChannel:
279 delChannel( packet.channel(), sourceFD ); 279 delChannel( packet.channel(), sourceFD );
280 break; 280 break;
281 /* not implemented */ 281 /* not implemented */
282 case OCOPPacket::Return: 282 case OCOPPacket::Return:
283 break; 283 break;
284 /* not implemented :( */ 284 /* not implemented :( */
285 case OCOPPacket::Signal: 285 case OCOPPacket::Signal:
286 break; 286 break;
287 case OCOPPacket::IsRegistered: 287 case OCOPPacket::IsRegistered:
288 qWarning("IsRegistered");
288 isRegistered( packet.channel(), sourceFD ); 289 isRegistered( packet.channel(), sourceFD );
289 break; 290 break;
290 }; 291 };
291} 292}
292void OCopServer::errorOnServer() { 293void OCopServer::errorOnServer() {
293 /* 294 /*
294 * something is wrong on the server socket? 295 * something is wrong on the server socket?
295 * what should we do? 296 * what should we do?
296 * FIXME 297 * FIXME
297 */ 298 */
298} 299}
299QStringList OCopServer::channels() { 300QStringList OCopServer::channels() {
300 QStringList list; 301 QStringList list;
301 { 302 {
302 QMap<QCString, QValueList<int> >::Iterator it; 303 QMap<QCString, QValueList<int> >::Iterator it;
303 for (it = m_channels.begin(); it != m_channels.end(); ++it ) { 304 for (it = m_channels.begin(); it != m_channels.end(); ++it ) {
304 list << it.key(); 305 list << it.key();
305 }; 306 };
306 } 307 }
307 return list; 308 return list;
308} 309}
309bool OCopServer::isChannelRegistered( const QCString& chan ) const{ 310bool OCopServer::isChannelRegistered( const QCString& chan ) const{
310 return m_channels.contains( chan ); 311 return m_channels.contains( chan );
311} 312}
312void OCopServer::addChannel( const QCString& channel, 313void OCopServer::addChannel( const QCString& channel,
313 int fd ) { 314 int fd ) {
314 QMap<QCString, QValueList<int> >::Iterator it; 315 QMap<QCString, QValueList<int> >::Iterator it;
315 it = m_channels.find( channel ); 316 it = m_channels.find( channel );
316 317
317 /* could be empty */ 318 /* could be empty */
318 QValueList<int> list = it.data(); 319 QValueList<int> list = it.data();
319 list.append( fd ); 320 list.append( fd );
320 it = m_channels.replace( channel, list ); 321 it = m_channels.replace( channel, list );
321}; 322};
322void OCopServer::delChannel( const QCString& channel, 323void OCopServer::delChannel( const QCString& channel,
323 int fd ) { 324 int fd ) {
324 if (!m_channels.contains( channel ) ) 325 if (!m_channels.contains( channel ) )
325 return; 326 return;
326 327
327 QMap<QCString, QValueList<int> >::Iterator it; 328 QMap<QCString, QValueList<int> >::Iterator it;
328 it = m_channels.find( channel ); 329 it = m_channels.find( channel );
329 330
330 if ( it.data().contains(fd) ) { 331 if ( it.data().contains(fd) ) {
331 332
332 QValueList<int> ints = it.data(); 333 QValueList<int> ints = it.data();
333 if ( ints.count() == 1 ) 334 if ( ints.count() == 1 )
334 m_channels.remove( it ); 335 m_channels.remove( it );
335 else{ 336 else{
336 QValueList<int> ints = it.data(); 337 QValueList<int> ints = it.data();
337 ints.remove( fd ); 338 ints.remove( fd );
338 m_channels.replace( it.key(), ints ); 339 m_channels.replace( it.key(), ints );
339 } 340 }
340 } 341 }
341} 342}
342void OCopServer::isRegistered( const QCString& channel, int fd) { 343void OCopServer::isRegistered( const QCString& channel, int fd) {
344 qWarning("isRegistered");
343 OCOPHead head; 345 OCOPHead head;
344 QCString func(2); 346 QCString func(2);
345 347
346 memset(&head, 0, sizeof(head ) ); 348 memset(&head, 0, sizeof(head ) );
347 head.magic = 47; 349 head.magic = 47;
348 head.type = OCOPPacket::IsRegistered; 350 head.type = OCOPPacket::IsRegistered;
349 head.chlen = channel.size(); 351 head.chlen = channel.size();
350 head.funclen = func.size(); 352 head.funclen = func.size();
351 head.datalen = 0; 353 head.datalen = 0;
352 354
353 if ( isChannelRegistered( channel ) ) { 355 if ( isChannelRegistered( channel ) ) {
354 //is registered 356 //is registered
355 func[0] = 1; 357 func[0] = 1;
356 }else{ 358 }else{
357 func[0] = 0; 359 func[0] = 0;
358 } 360 }
359 361
360 /** 362 /**
361 * write the head 363 * write the head
362 * and then channel 364 * and then channel
363 * success/failure inside func 365 * success/failure inside func
364 */ 366 */
365 write(fd, &head, sizeof(head) ); 367 write(fd, &head, sizeof(head) );
366 write(fd, channel.data(), channel.size() ); 368 write(fd, channel.data(), channel.size() );
367 write(fd, func.data(), func.size() ); 369 write(fd, func.data(), func.size() );
368} 370}
369QValueList<int> OCopServer::clients( const QCString& channel ) { 371QValueList<int> OCopServer::clients( const QCString& channel ) {
370 return m_channels[channel]; 372 return m_channels[channel];
371} 373}
372void OCopServer::call( const OCOPPacket& p, int fd ) { 374void OCopServer::call( const OCOPPacket& p, int ) {
373 QValueList<int> cli = clients( p.channel() ); 375 QValueList<int> cli = clients( p.channel() );
374 QValueList<int>::Iterator it; 376 QValueList<int>::Iterator it;
375 377
376 OCOPHead head = p.head(); 378 OCOPHead head = p.head();
377 for (it = cli.begin(); it != cli.end(); ++it ) { 379 for (it = cli.begin(); it != cli.end(); ++it ) {
378 write( (*it), &head, sizeof(head ) ); 380 write( (*it), &head, sizeof(head ) );
379 /* expl. shared! */ 381 /* expl. shared! */
380 write( (*it), p.channel().data(), p.channel().size() ); 382 write( (*it), p.channel().data(), p.channel().size() );
381 write( (*it), p.header().data(), p.header().size() ); 383 write( (*it), p.header().data(), p.header().size() );
382 write( (*it), p.content().data(), p.content().size() ); 384 write( (*it), p.content().data(), p.content().size() );
383 }; 385 };
384} 386}
diff --git a/x11/ipc/server/ocopserver.pro b/x11/ipc/server/ocopserver.pro
index 1776063..e0a928c 100644
--- a/x11/ipc/server/ocopserver.pro
+++ b/x11/ipc/server/ocopserver.pro
@@ -1,9 +1,10 @@
1 TEMPLATE= app 1 TEMPLATE= app
2DESTDIR = $(OPIEDIR)/bin
2 CONFIG = qt warn_on debug 3 CONFIG = qt warn_on debug
3 #CONFIG = qt warn_on release 4 #CONFIG = qt warn_on release
4 HEADERS = ../common/ocoppacket.h ocopclient.h ocopserver.h 5 HEADERS = ../common/ocoppacket.h ocopclient.h ocopserver.h
5 SOURCES = ../common/ocoppacket.cpp main.cpp ocopserver.cpp 6 SOURCES = ../common/ocoppacket.cpp main.cpp ocopserver.cpp
6 INCLUDEPATH+= $(OPIEDIR)/include 7 INCLUDEPATH+= $(OPIEDIR)/include
7 DEPENDPATH+= $(OPIEDIR)/include 8 DEPENDPATH+= $(OPIEDIR)/include
8 TARGET = ocopserver 9 TARGET = ocopserver
9 10