summaryrefslogtreecommitdiff
authorerik <erik>2007-01-29 21:53:48 (UTC)
committer erik <erik>2007-01-29 21:53:48 (UTC)
commit02ef45be75a3024df11365956e1cce6392d9103c (patch) (unidiff)
tree42fd5c909d67a473f57a607e01d32e01b3dd2511
parentb2c306a99b8dc82c981390f02db859149fac8cf0 (diff)
downloadopie-02ef45be75a3024df11365956e1cce6392d9103c.zip
opie-02ef45be75a3024df11365956e1cce6392d9103c.tar.gz
opie-02ef45be75a3024df11365956e1cce6392d9103c.tar.bz2
Each file in this commit has an issue where the initial value of a variable
is assumed to be something but no initial value is given. This commit changes that by either assigning an initial value or removing the assumption on an initial value (usually the former).
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/device/odevice_htc.cpp3
-rw-r--r--libopie2/opiepim/private/opimeventsortvector.cpp9
-rw-r--r--noncore/apps/confedit/listviewitemconffile.cpp59
-rw-r--r--noncore/apps/opie-console/io_irda.cpp1
-rw-r--r--noncore/apps/opie-console/mainwindow.cpp10
-rw-r--r--noncore/apps/opie-reader/CFilter.cpp2
-rw-r--r--noncore/apps/opie-reader/CRegExp.cpp4
-rw-r--r--noncore/apps/opie-reader/Palm2QImage.cpp4
-rw-r--r--noncore/apps/opie-reader/QTReader.cpp2
-rw-r--r--noncore/apps/opie-reader/plucker_base.cpp2
-rw-r--r--noncore/apps/opie-reader/striphtml.cpp2
-rw-r--r--noncore/apps/tinykate/libkate/document/katehighlight.cpp10
-rw-r--r--noncore/net/ftplib/ftplib.c2
-rw-r--r--noncore/settings/sysinfo/contrib/dhry.c2
14 files changed, 56 insertions, 56 deletions
diff --git a/libopie2/opiecore/device/odevice_htc.cpp b/libopie2/opiecore/device/odevice_htc.cpp
index c21e10d..4e5200b 100644
--- a/libopie2/opiecore/device/odevice_htc.cpp
+++ b/libopie2/opiecore/device/odevice_htc.cpp
@@ -327,202 +327,201 @@ void HTC::playTouchSound()
327 327
328void HTC::playKeySound() 328void HTC::playKeySound()
329{ 329{
330 buzzer( SHARP_BUZ_KEYSOUND ); 330 buzzer( SHARP_BUZ_KEYSOUND );
331} 331}
332 332
333 333
334QValueList <OLed> HTC::ledList() const 334QValueList <OLed> HTC::ledList() const
335{ 335{
336 QValueList <OLed> vl; 336 QValueList <OLed> vl;
337 vl << Led_Mail; 337 vl << Led_Mail;
338 return vl; 338 return vl;
339} 339}
340 340
341QValueList <OLedState> HTC::ledStateList( OLed l ) const 341QValueList <OLedState> HTC::ledStateList( OLed l ) const
342{ 342{
343 QValueList <OLedState> vl; 343 QValueList <OLedState> vl;
344 344
345 if ( l == Led_Mail ) 345 if ( l == Led_Mail )
346 vl << Led_Off << Led_On << Led_BlinkSlow; 346 vl << Led_Off << Led_On << Led_BlinkSlow;
347 return vl; 347 return vl;
348} 348}
349 349
350OLedState HTC::ledState( OLed which ) const 350OLedState HTC::ledState( OLed which ) const
351{ 351{
352 if ( which == Led_Mail ) 352 if ( which == Led_Mail )
353 return m_leds [0]; 353 return m_leds [0];
354 else 354 else
355 return Led_Off; 355 return Led_Off;
356} 356}
357 357
358bool HTC::setLedState( OLed which, OLedState st ) 358bool HTC::setLedState( OLed which, OLedState st )
359{ 359{
360 qDebug( "HTC::setLedState: ODevice handling not yet implemented" ); 360 qDebug( "HTC::setLedState: ODevice handling not yet implemented" );
361 return false; 361 return false;
362} 362}
363 363
364int HTC::displayBrightnessResolution() const 364int HTC::displayBrightnessResolution() const
365{ 365{
366 int res = 1; 366 int res = 1;
367 367
368 int fd = ::open( m_backlightdev + "max_brightness", O_RDONLY|O_NONBLOCK ); 368 int fd = ::open( m_backlightdev + "max_brightness", O_RDONLY|O_NONBLOCK );
369 369
370 if ( fd ) 370 if ( fd )
371 { 371 {
372 char buf[100]; 372 char buf[100];
373 if ( ::read( fd, &buf[0], sizeof buf ) ) ::sscanf( &buf[0], "%d", &res ); 373 if ( ::read( fd, &buf[0], sizeof buf ) ) ::sscanf( &buf[0], "%d", &res );
374 ::close( fd ); 374 ::close( fd );
375 } 375 }
376 376
377 return res; 377 return res;
378} 378}
379 379
380bool HTC::setDisplayBrightness( int bright ) 380bool HTC::setDisplayBrightness( int bright )
381{ 381{
382 382
383 //qDebug( "HTC::setDisplayBrightness( %d )", bright ); 383 //qDebug( "HTC::setDisplayBrightness( %d )", bright );
384 bool res = false; 384 bool res = false;
385 385
386 if ( bright > 255 ) bright = 255; 386 if ( bright > 255 ) bright = 255;
387 if ( bright < 0 ) bright = 0; 387 if ( bright < 0 ) bright = 0;
388 388
389 int numberOfSteps = displayBrightnessResolution(); 389 int numberOfSteps = displayBrightnessResolution();
390 int val = ( bright == 1 ) ? 1 : ( bright * numberOfSteps ) / 255; 390 int val = ( bright == 1 ) ? 1 : ( bright * numberOfSteps ) / 255;
391 391
392 int fd = ::open( m_backlightdev + "brightness", O_WRONLY|O_NONBLOCK ); 392 int fd = ::open( m_backlightdev + "brightness", O_WRONLY|O_NONBLOCK );
393 if ( fd ) 393 if ( fd )
394 { 394 {
395 char buf[100]; 395 char buf[100];
396 int len = ::snprintf( &buf[0], sizeof buf, "%d", val ); 396 int len = ::snprintf( &buf[0], sizeof buf, "%d", val );
397 res = ( ::write( fd, &buf[0], len ) == 0 ); 397 res = ( ::write( fd, &buf[0], len ) == 0 );
398 ::close( fd ); 398 ::close( fd );
399 } 399 }
400 return res; 400 return res;
401} 401}
402 402
403bool HTC::setDisplayStatus( bool on ) 403bool HTC::setDisplayStatus( bool on )
404{ 404{
405 405
406 bool res = false; 406 bool res = false;
407 407
408 int fd = ::open( m_backlightdev + "power", O_WRONLY|O_NONBLOCK ); 408 int fd = ::open( m_backlightdev + "power", O_WRONLY|O_NONBLOCK );
409 if ( fd ) 409 if ( fd )
410 { 410 {
411 char buf[10]; 411 char buf[10];
412 buf[0] = on ? FB_BLANK_UNBLANK : FB_BLANK_POWERDOWN; 412 buf[0] = on ? FB_BLANK_UNBLANK : FB_BLANK_POWERDOWN;
413 buf[1] = '\0'; 413 buf[1] = '\0';
414 res = ( ::write( fd, &buf[0], 2 ) == 0 ); 414 res = ( ::write( fd, &buf[0], 2 ) == 0 );
415 ::close( fd ); 415 ::close( fd );
416 } 416 }
417 return res; 417 return res;
418} 418}
419 419
420Transformation HTC::rotation() const 420Transformation HTC::rotation() const
421{ 421{
422 qDebug( "HTC::rotation()" ); 422 qDebug( "HTC::rotation()" );
423 Transformation rot; 423 Transformation rot = Rot270;
424 424
425 switch ( d->m_model ) { 425 switch ( d->m_model ) {
426 case Model_HTC_Universal: 426 case Model_HTC_Universal:
427 { 427 {
428 OHingeStatus hs = readHingeSensor(); 428 OHingeStatus hs = readHingeSensor();
429 qDebug( "HTC::rotation() - hinge sensor = %d", (int) hs ); 429 qDebug( "HTC::rotation() - hinge sensor = %d", (int) hs );
430 if ( hs == CASE_PORTRAIT ) rot = Rot0; 430 if ( hs == CASE_PORTRAIT ) rot = Rot0;
431 else if ( hs == CASE_UNKNOWN ) rot = Rot270; 431 else if ( hs == CASE_UNKNOWN ) rot = Rot270;
432 else rot = Rot270;
433 } 432 }
434 break; 433 break;
435 } 434 }
436 435
437 qDebug( "HTC::rotation() - returning '%d'", rot ); 436 qDebug( "HTC::rotation() - returning '%d'", rot );
438 return rot; 437 return rot;
439} 438}
440ODirection HTC::direction() const 439ODirection HTC::direction() const
441{ 440{
442 ODirection dir; 441 ODirection dir;
443 442
444 switch ( d->m_model ) { 443 switch ( d->m_model ) {
445 case Model_HTC_Universal: { 444 case Model_HTC_Universal: {
446 OHingeStatus hs = readHingeSensor(); 445 OHingeStatus hs = readHingeSensor();
447 if ( hs == CASE_PORTRAIT ) dir = CCW; 446 if ( hs == CASE_PORTRAIT ) dir = CCW;
448 else if ( hs == CASE_UNKNOWN ) dir = CCW; 447 else if ( hs == CASE_UNKNOWN ) dir = CCW;
449 else dir = CW; 448 else dir = CW;
450 } 449 }
451 break; 450 break;
452 default: dir = d->m_direction; 451 default: dir = d->m_direction;
453 break; 452 break;
454 } 453 }
455 return dir; 454 return dir;
456 455
457} 456}
458 457
459bool HTC::hasHingeSensor() const 458bool HTC::hasHingeSensor() const
460{ 459{
461 return d->m_model == Model_HTC_Universal; 460 return d->m_model == Model_HTC_Universal;
462} 461}
463 462
464OHingeStatus HTC::readHingeSensor() const 463OHingeStatus HTC::readHingeSensor() const
465{ 464{
466 /* 465 /*
467 * The HTC Universal keyboard is event source 1 in kernel 2.6. 466 * The HTC Universal keyboard is event source 1 in kernel 2.6.
468 * Hinge status is reported via Input System Switchs 0 and 1 like that: 467 * Hinge status is reported via Input System Switchs 0 and 1 like that:
469 * 468 *
470 * ------------------------- 469 * -------------------------
471 * | SW0 | SW1 | CASE | 470 * | SW0 | SW1 | CASE |
472 * |-----|-----|-----------| 471 * |-----|-----|-----------|
473 * | 0 0 Unknown | 472 * | 0 0 Unknown |
474 * | 1 0 Portrait | 473 * | 1 0 Portrait |
475 * | 0 1 Closed | 474 * | 0 1 Closed |
476 * | 1 1 Landscape | 475 * | 1 1 Landscape |
477 * ------------------------- 476 * -------------------------
478 */ 477 */
479 OInputDevice* keyboard = OInputSystem::instance()->device( "event1" ); 478 OInputDevice* keyboard = OInputSystem::instance()->device( "event1" );
480 bool switch0 = true; 479 bool switch0 = true;
481 bool switch1 = false; 480 bool switch1 = false;
482 if ( keyboard ) 481 if ( keyboard )
483 { 482 {
484 switch0 = keyboard->isHeld( OInputDevice::Switch0 ); 483 switch0 = keyboard->isHeld( OInputDevice::Switch0 );
485 switch1 = keyboard->isHeld( OInputDevice::Switch1 ); 484 switch1 = keyboard->isHeld( OInputDevice::Switch1 );
486 } 485 }
487 if ( switch0 ) 486 if ( switch0 )
488 { 487 {
489 return switch1 ? CASE_LANDSCAPE : CASE_PORTRAIT; 488 return switch1 ? CASE_LANDSCAPE : CASE_PORTRAIT;
490 } 489 }
491 else 490 else
492 { 491 {
493 return switch1 ? CASE_CLOSED : CASE_UNKNOWN; 492 return switch1 ? CASE_CLOSED : CASE_UNKNOWN;
494 } 493 }
495} 494}
496 495
497void HTC::initHingeSensor() 496void HTC::initHingeSensor()
498{ 497{
499 if ( m_embedix ) return; 498 if ( m_embedix ) return;
500 499
501 m_hinge.setName( "/dev/input/event1" ); 500 m_hinge.setName( "/dev/input/event1" );
502 if ( !m_hinge.open( IO_ReadOnly ) ) 501 if ( !m_hinge.open( IO_ReadOnly ) )
503 { 502 {
504 qWarning( "HTC::init() - Couldn't open /dev/input/event1 for read (%s)", strerror( errno ) ); 503 qWarning( "HTC::init() - Couldn't open /dev/input/event1 for read (%s)", strerror( errno ) );
505 return; 504 return;
506 } 505 }
507 506
508 QSocketNotifier* sn = new QSocketNotifier( m_hinge.handle(), QSocketNotifier::Read, this ); 507 QSocketNotifier* sn = new QSocketNotifier( m_hinge.handle(), QSocketNotifier::Read, this );
509 QObject::connect( sn, SIGNAL(activated(int)), this, SLOT(hingeSensorTriggered()) ); 508 QObject::connect( sn, SIGNAL(activated(int)), this, SLOT(hingeSensorTriggered()) );
510 509
511 qDebug( "HTC::init() - Hinge Sensor Initialization successfully completed" ); 510 qDebug( "HTC::init() - Hinge Sensor Initialization successfully completed" );
512} 511}
513 512
514void HTC::hingeSensorTriggered() 513void HTC::hingeSensorTriggered()
515{ 514{
516 qDebug( "HTC::hingeSensorTriggered() - got event" ); 515 qDebug( "HTC::hingeSensorTriggered() - got event" );
517 struct input_event e; 516 struct input_event e;
518 if ( ::read( m_hinge.handle(), &e, sizeof e ) > 0 ) 517 if ( ::read( m_hinge.handle(), &e, sizeof e ) > 0 )
519 { 518 {
520 qDebug( "HTC::hingeSensorTriggered() - event has type %d, code %d, value %d", e.type, e.code, e.value ); 519 qDebug( "HTC::hingeSensorTriggered() - event has type %d, code %d, value %d", e.type, e.code, e.value );
521 if ( e.type != EV_SW ) return; 520 if ( e.type != EV_SW ) return;
522 if ( readHingeSensor() != CASE_UNKNOWN ) 521 if ( readHingeSensor() != CASE_UNKNOWN )
523 { 522 {
524 qDebug( "HTC::hingeSensorTriggered() - got valid switch event, calling rotateDefault()" ); 523 qDebug( "HTC::hingeSensorTriggered() - got valid switch event, calling rotateDefault()" );
525 QCopChannel::send( "QPE/Rotation", "rotateDefault()" ); 524 QCopChannel::send( "QPE/Rotation", "rotateDefault()" );
526 } 525 }
527 } 526 }
528} 527}
diff --git a/libopie2/opiepim/private/opimeventsortvector.cpp b/libopie2/opiepim/private/opimeventsortvector.cpp
index 4220c63..b85f848 100644
--- a/libopie2/opiepim/private/opimeventsortvector.cpp
+++ b/libopie2/opiepim/private/opimeventsortvector.cpp
@@ -1,134 +1,131 @@
1/* 1/*
2 This file is part of the Opie Project 2 This file is part of the Opie Project
3 Copyright (C) 2004 Stefan Eilers <stefan@eilers-online.net> 3 Copyright (C) 2004 Stefan Eilers <stefan@eilers-online.net>
4 =. Copyright (C) The Opie Team <opie-devel@handhelds.org> 4 =. Copyright (C) The Opie Team <opie-devel@handhelds.org>
5 .=l. 5 .=l.
6 .>+-= 6 .>+-=
7 _;:, .> :=|. This program is free software; you can 7 _;:, .> :=|. This program is free software; you can
8.> <`_, > . <= redistribute it and/or modify it under 8.> <`_, > . <= redistribute it and/or modify it under
9:`=1 )Y*s>-.-- : the terms of the GNU Library General Public 9:`=1 )Y*s>-.-- : the terms of the GNU Library General Public
10.="- .-=="i, .._ License as published by the Free Software 10.="- .-=="i, .._ License as published by the Free Software
11 - . .-<_> .<> Foundation; either version 2 of the License, 11 - . .-<_> .<> Foundation; either version 2 of the License,
12 ._= =} : or (at your option) any later version. 12 ._= =} : or (at your option) any later version.
13 .%`+i> _;_. 13 .%`+i> _;_.
14 .i_,=:_. -<s. This program is distributed in the hope that 14 .i_,=:_. -<s. This program is distributed in the hope that
15 + . -:. = it will be useful, but WITHOUT ANY WARRANTY; 15 + . -:. = it will be useful, but WITHOUT ANY WARRANTY;
16 : .. .:, . . . without even the implied warranty of 16 : .. .:, . . . without even the implied warranty of
17 =_ + =;=|` MERCHANTABILITY or FITNESS FOR A 17 =_ + =;=|` MERCHANTABILITY or FITNESS FOR A
18 _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU 18 _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU
19..}^=.= = ; Library General Public License for more 19..}^=.= = ; Library General Public License for more
20++= -. .` .: details. 20++= -. .` .: details.
21 : = ...= . :.=- 21 : = ...= . :.=-
22 -. .:....=;==+<; You should have received a copy of the GNU 22 -. .:....=;==+<; You should have received a copy of the GNU
23 -_. . . )=. = Library General Public License along with 23 -_. . . )=. = Library General Public License along with
24 -- :-=` this library; see the file COPYING.LIB. 24 -- :-=` this library; see the file COPYING.LIB.
25 If not, write to the Free Software Foundation, 25 If not, write to the Free Software Foundation,
26 Inc., 59 Temple Place - Suite 330, 26 Inc., 59 Temple Place - Suite 330,
27 Boston, MA 02111-1307, USA. 27 Boston, MA 02111-1307, USA.
28*/ 28*/
29 29
30#include "opimeventsortvector.h" 30#include "opimeventsortvector.h"
31#include <opie2/ocontactaccess.h> 31#include <opie2/ocontactaccess.h>
32#include <opie2/opimnotifymanager.h> 32#include <opie2/opimnotifymanager.h>
33#include <opie2/odatebookaccess.h> 33#include <opie2/odatebookaccess.h>
34 34
35#include <qvaluelist.h> 35#include <qvaluelist.h>
36 36
37namespace Opie { 37namespace Opie {
38namespace Internal { 38namespace Internal {
39 39
40namespace{ 40int testAlarmNotifiers( const OPimNotifyManager& leftnotifiers, const OPimNotifyManager& rightnotifiers ){
41
42inline int testAlarmNotifiers( const OPimNotifyManager& leftnotifiers, const OPimNotifyManager& rightnotifiers ){
43 OPimNotifyManager::Alarms left_alarms = leftnotifiers.alarms(); 41 OPimNotifyManager::Alarms left_alarms = leftnotifiers.alarms();
44 OPimNotifyManager::Alarms right_alarms = rightnotifiers.alarms(); 42 OPimNotifyManager::Alarms right_alarms = rightnotifiers.alarms();
45 43
46 // Well.. How could we compare two lists of alarms? I think we should find the most early datetimes 44 // Well.. How could we compare two lists of alarms? I think we should find the most early datetimes
47 // and compare them.. (se) 45 // and compare them.. (se)
48 // Find the first alarm of the left list 46 // Find the first alarm of the left list
49 OPimNotifyManager::Alarms::Iterator it; 47 OPimNotifyManager::Alarms::Iterator it;
50 QDateTime left_earliest; // This datetime is initialized as invalid!! 48 QDateTime left_earliest; // This datetime is initialized as invalid!!
51 for ( it = left_alarms.begin(); it != left_alarms.end(); ++it ){ 49 for ( it = left_alarms.begin(); it != left_alarms.end(); ++it ){
52 if ( !left_earliest.isValid() || left_earliest > (*it).dateTime() ){ 50 if ( !left_earliest.isValid() || left_earliest > (*it).dateTime() ){
53 left_earliest = (*it).dateTime(); 51 left_earliest = (*it).dateTime();
54 } 52 }
55 } 53 }
56 QDateTime right_earliest; // This datetime is initialized as invalid!! 54 QDateTime right_earliest; // This datetime is initialized as invalid!!
57 for ( it = right_alarms.begin(); it != right_alarms.end(); ++it ){ 55 for ( it = right_alarms.begin(); it != right_alarms.end(); ++it ){
58 if ( !right_earliest.isValid() || right_earliest > (*it).dateTime() ){ 56 if ( !right_earliest.isValid() || right_earliest > (*it).dateTime() ){
59 right_earliest = (*it).dateTime(); 57 right_earliest = (*it).dateTime();
60 } 58 }
61 } 59 }
62 60
63 int ret; 61 int ret = 0;
64 62
65 // Now compare this found alarms 63 // Now compare this found alarms
66 if ( !left_earliest .isValid() ) ret++; 64 if ( !left_earliest .isValid() ) ret++;
67 if ( !right_earliest.isValid() ) ret--; 65 if ( !right_earliest.isValid() ) ret--;
68 66
69 if ( left_earliest.isValid() && right_earliest.isValid() ){ 67 if ( left_earliest.isValid() && right_earliest.isValid() ){
70 ret += left_earliest < right_earliest ? -1 : 1; 68 left_earliest < right_earliest ? ret-- : ret++;
71 } 69 }
72 70
73 return ret; 71 return ret;
74 72
75} 73}
76}
77 74
78OPimEventSortVector::OPimEventSortVector( uint size, bool asc, int sort ) 75OPimEventSortVector::OPimEventSortVector( uint size, bool asc, int sort )
79 : OPimSortVector<OPimEvent>( size, asc, sort ) {} 76 : OPimSortVector<OPimEvent>( size, asc, sort ) {}
80 77
81int OPimEventSortVector::compareItems( const OPimEvent& left, 78int OPimEventSortVector::compareItems( const OPimEvent& left,
82 const OPimEvent& right ) { 79 const OPimEvent& right ) {
83 if ( left.uid() == right.uid() ) 80 if ( left.uid() == right.uid() )
84 return 0; 81 return 0;
85 82
86 int ret = 0; 83 int ret = 0;
87 bool asc = sortAscending(); 84 bool asc = sortAscending();
88 85
89 switch( sortOrder() ) { 86 switch( sortOrder() ) {
90 case ODateBookAccess::SortDescription: 87 case ODateBookAccess::SortDescription:
91 ret = testString( left.description(), right.description() ); 88 ret = testString( left.description(), right.description() );
92 break; 89 break;
93 case ODateBookAccess::SortLocation: 90 case ODateBookAccess::SortLocation:
94 ret = testString( left.location(), right.location() ); 91 ret = testString( left.location(), right.location() );
95 break; 92 break;
96 case ODateBookAccess::SortNote: 93 case ODateBookAccess::SortNote:
97 ret = testString( left.note(),right.note() ); 94 ret = testString( left.note(),right.note() );
98 break; 95 break;
99 case ODateBookAccess::SortStartTime: 96 case ODateBookAccess::SortStartTime:
100 ret = testTime( left.startDateTime().time(), right.startDateTime().time() ); 97 ret = testTime( left.startDateTime().time(), right.startDateTime().time() );
101 break; 98 break;
102 case ODateBookAccess::SortEndTime: 99 case ODateBookAccess::SortEndTime:
103 ret = testTime( left.endDateTime().time(), right.endDateTime().time() ); 100 ret = testTime( left.endDateTime().time(), right.endDateTime().time() );
104 break; 101 break;
105 case ODateBookAccess::SortStartDate: 102 case ODateBookAccess::SortStartDate:
106 ret = testDate( left.startDateTime().date(), right.startDateTime().date() ); 103 ret = testDate( left.startDateTime().date(), right.startDateTime().date() );
107 break; 104 break;
108 case ODateBookAccess::SortEndDate: 105 case ODateBookAccess::SortEndDate:
109 ret = testDate( left.endDateTime().date(), right.endDateTime().date() ); 106 ret = testDate( left.endDateTime().date(), right.endDateTime().date() );
110 break; 107 break;
111 case ODateBookAccess::SortStartDateTime: 108 case ODateBookAccess::SortStartDateTime:
112 ret = testDateTime( left.startDateTime(), right.startDateTime() ); 109 ret = testDateTime( left.startDateTime(), right.startDateTime() );
113 break; 110 break;
114 case ODateBookAccess::SortEndDateTime: 111 case ODateBookAccess::SortEndDateTime:
115 ret = testDateTime( left.endDateTime(), right.endDateTime() ); 112 ret = testDateTime( left.endDateTime(), right.endDateTime() );
116 break; 113 break;
117 case ODateBookAccess::SortAlarmDateTime: 114 case ODateBookAccess::SortAlarmDateTime:
118 ret = testAlarmNotifiers( left.notifiers(), right.notifiers() ); 115 ret = testAlarmNotifiers( left.notifiers(), right.notifiers() );
119 break; 116 break;
120 default: 117 default:
121 odebug << "OpimEventSortVector: Unknown sortOrder: " << sortOrder() << oendl; 118 odebug << "OpimEventSortVector: Unknown sortOrder: " << sortOrder() << oendl;
122 } 119 }
123 120
124 /* twist to honor ascending/descending setting as QVector only sorts ascending */ 121 /* twist to honor ascending/descending setting as QVector only sorts ascending */
125 if ( !asc ) 122 if ( !asc )
126 ret *= -1; 123 ret *= -1;
127 124
128 // Maybe differentiate as in OPimTodoSortVector ### FIXME 125 // Maybe differentiate as in OPimTodoSortVector ### FIXME
129 // if( ret ) 126 // if( ret )
130 return ret; 127 return ret;
131} 128}
132 129
133} 130}
134} 131}
diff --git a/noncore/apps/confedit/listviewitemconffile.cpp b/noncore/apps/confedit/listviewitemconffile.cpp
index 2958cf5..a7d6b00 100644
--- a/noncore/apps/confedit/listviewitemconffile.cpp
+++ b/noncore/apps/confedit/listviewitemconffile.cpp
@@ -1,165 +1,170 @@
1/*************************************************************************** 1/***************************************************************************
2 * * 2 * *
3 * This program is free software; you can redistribute it and/or modify * 3 * This program is free software; you can redistribute it and/or modify *
4 * it under the terms of the GNU General Public License as published by * 4 * it under the terms of the GNU General Public License as published by *
5 * the Free Software Foundation; either version 2 of the License, or * 5 * the Free Software Foundation; either version 2 of the License, or *
6 * (at your option) any later version. * 6 * (at your option) any later version. *
7 * * 7 * *
8 ***************************************************************************/ 8 ***************************************************************************/
9// (c) 2002 Patrick S. Vogt <tille@handhelds.org> 9// (c) 2002 Patrick S. Vogt <tille@handhelds.org>
10 10
11#include "listviewitemconffile.h" 11#include "listviewitemconffile.h"
12#include "listviewitemconfigentry.h" 12#include "listviewitemconfigentry.h"
13 13
14/* OPIE */ 14/* OPIE */
15#include <opie2/odebug.h> 15#include <opie2/odebug.h>
16using namespace Opie::Core; 16using namespace Opie::Core;
17 17
18/* QT */ 18/* QT */
19#include <qmessagebox.h> 19#include <qmessagebox.h>
20#include <qtextstream.h> 20#include <qtextstream.h>
21 21
22#define tr QObject::tr 22#define tr QObject::tr
23 23
24ListViewItemConfFile::ListViewItemConfFile(QFileInfo *file, QListView *parent) 24ListViewItemConfFile::ListViewItemConfFile(QFileInfo *file, QListView *parent)
25 : ListViewItemConf(parent), _valid(false) 25 : ListViewItemConf(parent), _valid(false)
26{ 26{
27 confFileInfo = file; 27 confFileInfo = file;
28 // parseFile(); 28 // parseFile();
29 displayText(); 29 displayText();
30} 30}
31 31
32ListViewItemConfFile::~ListViewItemConfFile() 32ListViewItemConfFile::~ListViewItemConfFile()
33{ 33{
34} 34}
35 35
36 36
37void ListViewItemConfFile::displayText() 37void ListViewItemConfFile::displayText()
38{ 38{
39 setText(0,(_changed?"*":"")+confFileInfo->fileName()); 39 setText(0,(_changed?"*":"")+confFileInfo->fileName());
40} 40}
41 41
42QString ListViewItemConfFile::fileName() 42QString ListViewItemConfFile::fileName()
43{ 43{
44 return confFileInfo->fileName(); 44 return confFileInfo->fileName();
45} 45}
46 46
47void ListViewItemConfFile::parseFile() 47void ListViewItemConfFile::parseFile()
48{ 48{
49 //odebug << "ListViewItemConfFile::parseFile BEGIN" << oendl; 49 //odebug << "ListViewItemConfFile::parseFile BEGIN" << oendl;
50 QFile confFile(confFileInfo->absFilePath()); 50 QFile confFile(confFileInfo->absFilePath());
51 if(! confFile.open(IO_ReadOnly)) 51 if(! confFile.open(IO_ReadOnly))
52 QMessageBox::critical(0,tr("Could not open"),tr("The file ")+confFileInfo->fileName()+tr(" could not be opened."),1,0); 52 QMessageBox::critical(0,tr("Could not open"),tr("The file ")+confFileInfo->fileName()+tr(" could not be opened."),1,0);
53 QTextStream t( &confFile ); 53
54 QString s; 54 QTextStream t( &confFile );
55 QString s;
55 QString group; 56 QString group;
56 ListViewItemConfigEntry *groupItem; 57 ListViewItemConfigEntry *groupItem = 0;
57 ListViewItemConfigEntry *item; 58 ListViewItemConfigEntry *item;
58 while ( !t.atEnd() ) 59 while ( !t.atEnd() )
59 { 60 {
60 s = t.readLine().stripWhiteSpace(); 61 s = t.readLine().stripWhiteSpace();
61 //odebug << "line: >" << s.latin1() << "<\n" << oendl; 62 //odebug << "line: >" << s.latin1() << "<\n" << oendl;
62 if (s.contains("<?xml")) 63 if (s.contains("<?xml"))
63 { 64 {
64 _valid = false; 65 _valid = false;
65 break; 66 break;
66 }else 67 }
67 if ( s[0] == '[' && s[s.length()-1] == ']' ) 68 else if ( s[0] == '[' && s[s.length()-1] == ']' )
68 { 69 {
69 // odebug << "got group"+s << oendl; 70 //odebug << "got group"+s << oendl;
70 group = s.mid(1,s.length()-2); 71 group = s.mid(1,s.length()-2);
71 if (!groupItem) groupItem = new ListViewItemConfigEntry(this, tr("no group") ); 72 if (!groupItem)
73 groupItem = new ListViewItemConfigEntry(this, tr("no group") );
74
72 groupItem = new ListViewItemConfigEntry(this, group ); 75 groupItem = new ListViewItemConfigEntry(this, group );
73 insertItem( groupItem ); 76 insertItem( groupItem );
74 } else 77 }
75 if ( int pos = s.find('=') ) 78 else if ( int pos = s.find('=') )
76 { 79 {
77// odebug << "got key"+s << oendl; 80 //odebug << "got key"+s << oendl;
78 if (!groupItem) odebug << "PANIK NO GROUP! >" << group.latin1() << "<" << oendl; 81 if (!groupItem)
79 item = new ListViewItemConfigEntry(this, group, s ); 82 odebug << "PANIC! no group >" << group.latin1() << "<" << oendl;
83
84 item = new ListViewItemConfigEntry(this, group, s );
80 groupItem->insertItem( item ); 85 groupItem->insertItem( item );
81 } 86 }
82 } 87 }
83 confFile.close(); 88 confFile.close();
84 setExpandable( _valid ); 89 setExpandable( _valid );
85 //odebug << "ListViewItemConfFile::parseFile END" << oendl; 90 //odebug << "ListViewItemConfFile::parseFile END" << oendl;
86} 91}
87 92
88 93
89void ListViewItemConfFile::remove() 94void ListViewItemConfFile::remove()
90{ 95{
91 QFile::remove(confFileInfo->absFilePath()); 96 QFile::remove(confFileInfo->absFilePath());
92 QFile::remove(backupFileName()); 97 QFile::remove(backupFileName());
93 delete this; 98 delete this;
94} 99}
95 100
96void ListViewItemConfFile::revert() 101void ListViewItemConfFile::revert()
97{ 102{
98 if (!_changed) 103 if (!_changed)
99 { 104 {
100 // read the backup file 105 // read the backup file
101 QFile conf(confFileInfo->absFilePath()); 106 QFile conf(confFileInfo->absFilePath());
102 QFile back(backupFileName()); 107 QFile back(backupFileName());
103 108
104 if (!back.open(IO_ReadOnly)) return; 109 if (!back.open(IO_ReadOnly)) return;
105 if (!conf.open(IO_WriteOnly)) return; 110 if (!conf.open(IO_WriteOnly)) return;
106 111
107 #define SIZE 124 112 #define SIZE 124
108 char buf[SIZE]; 113 char buf[SIZE];
109 while (int c = back.readBlock(buf, SIZE) ) conf.writeBlock(buf,c); 114 while (int c = back.readBlock(buf, SIZE) ) conf.writeBlock(buf,c);
110 conf.close(); 115 conf.close();
111 back.close(); 116 back.close();
112 } 117 }
113 parseFile(); 118 parseFile();
114 expand(); 119 expand();
115} 120}
116 121
117void ListViewItemConfFile::save() 122void ListViewItemConfFile::save()
118{ 123{
119 if (!_changed) return; 124 if (!_changed) return;
120 QFile conf(confFileInfo->absFilePath()); 125 QFile conf(confFileInfo->absFilePath());
121 QFile back(backupFileName()); 126 QFile back(backupFileName());
122 127
123 if (!conf.open(IO_ReadOnly)) return; 128 if (!conf.open(IO_ReadOnly)) return;
124 if (!back.open(IO_WriteOnly)) return; 129 if (!back.open(IO_WriteOnly)) return;
125 130
126 char buf[SIZE]; 131 char buf[SIZE];
127 while (int c = conf.readBlock(buf, SIZE) ) back.writeBlock(buf,c); 132 while (int c = conf.readBlock(buf, SIZE) ) back.writeBlock(buf,c);
128 conf.close(); 133 conf.close();
129 back.close(); 134 back.close();
130 135
131 136
132 if (!conf.open(IO_WriteOnly)) return; 137 if (!conf.open(IO_WriteOnly)) return;
133 QTextStream *t = new QTextStream( &conf ); 138 QTextStream *t = new QTextStream( &conf );
134 for (QListViewItem *it = firstChild(); it!=0;it = it->nextSibling()) 139 for (QListViewItem *it = firstChild(); it!=0;it = it->nextSibling())
135 { 140 {
136 ((ListViewItemConfigEntry*)it)->save(t); 141 ((ListViewItemConfigEntry*)it)->save(t);
137 } 142 }
138 conf.close(); 143 conf.close();
139 unchanged(); 144 unchanged();
140} 145}
141 146
142 147
143bool ListViewItemConfFile::revertable() 148bool ListViewItemConfFile::revertable()
144{ 149{
145 return _changed || QFile(backupFileName()).exists(); 150 return _changed || QFile(backupFileName()).exists();
146} 151}
147 152
148QString ListViewItemConfFile::backupFileName() 153QString ListViewItemConfFile::backupFileName()
149{ 154{
150 return confFileInfo->absFilePath()+"~"; 155 return confFileInfo->absFilePath()+"~";
151} 156}
152 157
153 158
154void ListViewItemConfFile::expand() 159void ListViewItemConfFile::expand()
155{ 160{
156 QListViewItem *subItem = firstChild(); 161 QListViewItem *subItem = firstChild();
157 QListViewItem *toDel; 162 QListViewItem *toDel;
158 while(subItem) 163 while(subItem)
159 { 164 {
160 toDel = subItem; 165 toDel = subItem;
161 subItem = subItem->nextSibling(); 166 subItem = subItem->nextSibling();
162 delete toDel; 167 delete toDel;
163 } 168 }
164 parseFile(); 169 parseFile();
165} 170}
diff --git a/noncore/apps/opie-console/io_irda.cpp b/noncore/apps/opie-console/io_irda.cpp
index 9d27c85..a0f72ae 100644
--- a/noncore/apps/opie-console/io_irda.cpp
+++ b/noncore/apps/opie-console/io_irda.cpp
@@ -1,64 +1,65 @@
1#include "io_irda.h" 1#include "io_irda.h"
2 2
3IOIrda::IOIrda( const Profile &config ) : IOSerial( config ) { 3IOIrda::IOIrda( const Profile &config ) : IOSerial( config ) {
4 m_attach = 0; 4 m_attach = 0;
5} 5}
6 6
7 7
8IOIrda::~IOIrda() { 8IOIrda::~IOIrda() {
9 if ( m_attach ) { 9 if ( m_attach ) {
10 delete m_attach; 10 delete m_attach;
11 } 11 }
12} 12}
13 13
14 14
15void IOIrda::close() { 15void IOIrda::close() {
16 16
17 IOSerial::close(); 17 IOSerial::close();
18 // still need error handling 18 // still need error handling
19 delete m_attach; 19 delete m_attach;
20} 20}
21 21
22bool IOIrda::open() { 22bool IOIrda::open() {
23 bool ret; 23 bool ret;
24 24
25 // irdaattach here 25 // irdaattach here
26 m_attach = new Opie::Core::OProcess(); 26 m_attach = new Opie::Core::OProcess();
27 *m_attach << "irattach /dev/ttyS2 -s"; 27 *m_attach << "irattach /dev/ttyS2 -s";
28 28
29 connect( m_attach, SIGNAL( processExited(Opie::Core::OProcess*) ), 29 connect( m_attach, SIGNAL( processExited(Opie::Core::OProcess*) ),
30 this, SLOT( slotExited(Opie::Core::OProcess*) ) ); 30 this, SLOT( slotExited(Opie::Core::OProcess*) ) );
31 31
32 if ( m_attach->start() ) { 32 if ( m_attach->start() ) {
33 ret= IOSerial::open(); 33 ret= IOSerial::open();
34 } else { 34 } else {
35 // emit error!!! 35 // emit error!!!
36 delete m_attach; 36 delete m_attach;
37 m_attach = 0l; 37 m_attach = 0l;
38 ret = false;
38 } 39 }
39 return ret; 40 return ret;
40} 41}
41 42
42void IOIrda::reload( const Profile &config ) { 43void IOIrda::reload( const Profile &config ) {
43 m_device = config.readEntry("Device", IRDA_DEFAULT_DEVICE); 44 m_device = config.readEntry("Device", IRDA_DEFAULT_DEVICE);
44 m_baud = config.readNumEntry("Baud", IRDA_DEFAULT_BAUD); 45 m_baud = config.readNumEntry("Baud", IRDA_DEFAULT_BAUD);
45 m_parity = config.readNumEntry("Parity", IRDA_DEFAULT_PARITY); 46 m_parity = config.readNumEntry("Parity", IRDA_DEFAULT_PARITY);
46 m_dbits = config.readNumEntry("DataBits", IRDA_DEFAULT_DBITS); 47 m_dbits = config.readNumEntry("DataBits", IRDA_DEFAULT_DBITS);
47 m_sbits = config.readNumEntry("StopBits", IRDA_DEFAULT_SBITS); 48 m_sbits = config.readNumEntry("StopBits", IRDA_DEFAULT_SBITS);
48 m_flow = config.readNumEntry("Flow", IRDA_DEFAULT_FLOW); 49 m_flow = config.readNumEntry("Flow", IRDA_DEFAULT_FLOW);
49} 50}
50 51
51 52
52QString IOIrda::identifier() const { 53QString IOIrda::identifier() const {
53 return "irda"; 54 return "irda";
54} 55}
55 56
56QString IOIrda::name() const { 57QString IOIrda::name() const {
57 return "Irda IO Layer"; 58 return "Irda IO Layer";
58} 59}
59 60
60void IOIrda::slotExited(Opie::Core::OProcess* proc ){ 61void IOIrda::slotExited(Opie::Core::OProcess* proc ){
61 close(); 62 close();
62 delete proc; 63 delete proc;
63} 64}
64 65
diff --git a/noncore/apps/opie-console/mainwindow.cpp b/noncore/apps/opie-console/mainwindow.cpp
index aba7244..a884179 100644
--- a/noncore/apps/opie-console/mainwindow.cpp
+++ b/noncore/apps/opie-console/mainwindow.cpp
@@ -614,210 +614,206 @@ void MainWindow::slotOpenButtons( bool state ) {
614 } else { 614 } else {
615 m_buttonBar->hide(); 615 m_buttonBar->hide();
616 } 616 }
617} 617}
618 618
619 619
620 620
621void MainWindow::slotSessionChanged( Session* ses ) { 621void MainWindow::slotSessionChanged( Session* ses ) {
622 if(m_curSession) 622 if(m_curSession)
623 if(m_curSession->transferDialog()) m_curSession->transferDialog()->hide(); 623 if(m_curSession->transferDialog()) m_curSession->transferDialog()->hide();
624 if(ses) 624 if(ses)
625 if(ses->transferDialog()) ses->transferDialog()->show(); 625 if(ses->transferDialog()) ses->transferDialog()->show();
626 626
627 if ( ses ) { 627 if ( ses ) {
628 m_curSession = ses; 628 m_curSession = ses;
629 if ( m_curSession->layer()->isConnected() ) { 629 if ( m_curSession->layer()->isConnected() ) {
630 m_connect->setEnabled( false ); 630 m_connect->setEnabled( false );
631 m_disconnect->setEnabled( true ); 631 m_disconnect->setEnabled( true );
632 m_recordScript->setEnabled(!m_curSession->emulationHandler()->isRecording()); 632 m_recordScript->setEnabled(!m_curSession->emulationHandler()->isRecording());
633 m_saveScript->setEnabled(m_curSession->emulationHandler()->isRecording()); 633 m_saveScript->setEnabled(m_curSession->emulationHandler()->isRecording());
634 m_scripts->setItemEnabled(m_runScript_id, true); 634 m_scripts->setItemEnabled(m_runScript_id, true);
635 } else { 635 } else {
636 m_connect->setEnabled( true ); 636 m_connect->setEnabled( true );
637 m_disconnect->setEnabled( false ); 637 m_disconnect->setEnabled( false );
638 m_recordScript->setEnabled( false ); 638 m_recordScript->setEnabled( false );
639 m_saveScript->setEnabled( false ); 639 m_saveScript->setEnabled( false );
640 m_scripts->setItemEnabled(m_runScript_id, false); 640 m_scripts->setItemEnabled(m_runScript_id, false);
641 } 641 }
642 642
643 if ( ( currentSession()->emulationHandler()->isLogging() ) ) { 643 if ( ( currentSession()->emulationHandler()->isLogging() ) ) {
644 m_recordLog->setText( tr("Stop log") ); 644 m_recordLog->setText( tr("Stop log") );
645 } else { 645 } else {
646 m_recordLog->setText( tr("Start log") ); 646 m_recordLog->setText( tr("Start log") );
647 } 647 }
648 648
649 if ( ( m_curSession->layer() )->supports()[1] == 0 ) { 649 if ( ( m_curSession->layer() )->supports()[1] == 0 ) {
650 m_transfer->setEnabled( false ); 650 m_transfer->setEnabled( false );
651 } else { 651 } else {
652 m_transfer->setEnabled( true ); 652 m_transfer->setEnabled( true );
653 } 653 }
654 654
655 QWidget *w = m_curSession->widget(); 655 QWidget *w = m_curSession->widget();
656 if(w) w->setFocus(); 656 if(w) w->setFocus();
657 657
658 if(currentSession()->profile().readNumEntry("Wrap", 80)){ 658 if(currentSession()->profile().readNumEntry("Wrap", 80)){
659 m_isWrapped = true; 659 m_isWrapped = true;
660 } else { 660 } else {
661 m_isWrapped = false; 661 m_isWrapped = false;
662 } 662 }
663 663
664 m_kb->load(currentSession()->profile()); 664 m_kb->load(currentSession()->profile());
665 } 665 }
666} 666}
667 667
668void MainWindow::slotWrap() 668void MainWindow::slotWrap()
669{ 669{
670 if(m_curSession) 670 if(m_curSession)
671 { 671 {
672 EmulationHandler *e = m_curSession->emulationHandler(); 672 EmulationHandler *e = m_curSession->emulationHandler();
673 if(e) 673 if(e)
674 { 674 {
675 e->setWrap( m_isWrapped ? 80:0 ); 675 e->setWrap( m_isWrapped ? 80:0 );
676 m_isWrapped = !m_isWrapped; 676 m_isWrapped = !m_isWrapped;
677 } 677 }
678 } 678 }
679} 679}
680 680
681void MainWindow::slotFullscreen() { 681void MainWindow::slotFullscreen() {
682 682
683 683
684 684
685 if ( m_isFullscreen ) { 685 if ( m_isFullscreen ) {
686 ( m_curSession->widgetStack() )->reparent( savedParentFullscreen, 0, QPoint(0,0), true ); 686 ( m_curSession->widgetStack() )->reparent( savedParentFullscreen, 0, QPoint(0,0), true );
687 ( m_curSession->widgetStack() )->resize( savedParentFullscreen->width(), savedParentFullscreen->height() ); 687 ( m_curSession->widgetStack() )->resize( savedParentFullscreen->width(), savedParentFullscreen->height() );
688 ( m_curSession->emulationHandler() )->cornerButton()->hide(); 688 ( m_curSession->emulationHandler() )->cornerButton()->hide();
689 disconnect( ( m_curSession->emulationHandler() )->cornerButton(), SIGNAL( pressed() ), this, SLOT( slotFullscreen() ) ); 689 disconnect( ( m_curSession->emulationHandler() )->cornerButton(), SIGNAL( pressed() ), this, SLOT( slotFullscreen() ) );
690 690
691 } else { 691 } else {
692 savedParentFullscreen = ( m_curSession->widgetStack() )->parentWidget(); 692 savedParentFullscreen = ( m_curSession->widgetStack() )->parentWidget();
693 ( m_curSession->widgetStack() )->setFrameStyle( QFrame::NoFrame ); 693 ( m_curSession->widgetStack() )->setFrameStyle( QFrame::NoFrame );
694 ( m_curSession->widgetStack() )->reparent( 0, WStyle_Tool | WStyle_Customize | WStyle_StaysOnTop 694 ( m_curSession->widgetStack() )->reparent( 0, WStyle_Tool | WStyle_Customize | WStyle_StaysOnTop
695 , QPoint(0,0), false ); 695 , QPoint(0,0), false );
696 ( m_curSession->widgetStack() )->resize( qApp->desktop()->width(), qApp->desktop()->height() ); 696 ( m_curSession->widgetStack() )->resize( qApp->desktop()->width(), qApp->desktop()->height() );
697 ( m_curSession->widgetStack() )->setFocus(); 697 ( m_curSession->widgetStack() )->setFocus();
698 ( m_curSession->widgetStack() )->show(); 698 ( m_curSession->widgetStack() )->show();
699 699
700 ( ( m_curSession->emulationHandler() )->cornerButton() )->show(); 700 ( ( m_curSession->emulationHandler() )->cornerButton() )->show();
701 701
702 connect( ( m_curSession->emulationHandler() )->cornerButton(), SIGNAL( pressed() ), this, SLOT( slotFullscreen() ) ); 702 connect( ( m_curSession->emulationHandler() )->cornerButton(), SIGNAL( pressed() ), this, SLOT( slotFullscreen() ) );
703 } 703 }
704 704
705 m_isFullscreen = !m_isFullscreen; 705 m_isFullscreen = !m_isFullscreen;
706} 706}
707 707
708void MainWindow::slotScrollbarSelected(int index) 708void MainWindow::slotScrollbarSelected(int index)
709{ 709{
710 int loc; 710 int loc = 0;
711 711
712 Config cfg( "Konsole" ); 712 Config cfg( "Konsole" );
713 cfg.setGroup("ScrollBar"); 713 cfg.setGroup("ScrollBar");
714 if(index == sm_none) 714 if(index == sm_left)
715 {
716 loc = 0;
717 }
718 else if(index == sm_left)
719 { 715 {
720 loc = 1; 716 loc = 1;
721 } 717 }
722 else if(index == sm_right) 718 else if(index == sm_right)
723 { 719 {
724 loc = 2; 720 loc = 2;
725 } 721 }
726 722
727 cfg.writeEntry("Position", loc); 723 cfg.writeEntry("Position", loc);
728 724
729 if (currentSession()) { 725 if (currentSession()) {
730 currentSession()->emulationHandler()->setScrollbarLocation(loc); 726 currentSession()->emulationHandler()->setScrollbarLocation(loc);
731 } 727 }
732 728
733 m_scrollbar->setItemChecked(sm_none, index == sm_none); 729 m_scrollbar->setItemChecked(sm_none, index == sm_none);
734 m_scrollbar->setItemChecked(sm_left, index == sm_left); 730 m_scrollbar->setItemChecked(sm_left, index == sm_left);
735 m_scrollbar->setItemChecked(sm_right, index == sm_right); 731 m_scrollbar->setItemChecked(sm_right, index == sm_right);
736} 732}
737 733
738void MainWindow::slotKeyReceived(FKey k, ushort, ushort, bool pressed) { 734void MainWindow::slotKeyReceived(FKey k, ushort, ushort, bool pressed) {
739 735
740 if ( m_curSession ) { 736 if ( m_curSession ) {
741 737
742 QEvent::Type state; 738 QEvent::Type state;
743 739
744 if (pressed) state = QEvent::KeyPress; 740 if (pressed) state = QEvent::KeyPress;
745 else state = QEvent::KeyRelease; 741 else state = QEvent::KeyRelease;
746 742
747 QKeyEvent ke(state, k.qcode, k.unicode, 0, QString(QChar(k.unicode))); 743 QKeyEvent ke(state, k.qcode, k.unicode, 0, QString(QChar(k.unicode)));
748 744
749 // is this the best way to do this? cant figure out any other way to work 745 // is this the best way to do this? cant figure out any other way to work
750 QApplication::sendEvent((QObject *)m_curSession->widget(), &ke); 746 QApplication::sendEvent((QObject *)m_curSession->widget(), &ke);
751 ke.ignore(); 747 ke.ignore();
752 } 748 }
753} 749}
754void MainWindow::slotCopy() { 750void MainWindow::slotCopy() {
755 if (!currentSession() ) return; 751 if (!currentSession() ) return;
756 currentSession()->emulationHandler()->copy(); 752 currentSession()->emulationHandler()->copy();
757} 753}
758void MainWindow::slotPaste() { 754void MainWindow::slotPaste() {
759 if (!currentSession() ) return; 755 if (!currentSession() ) return;
760 currentSession()->emulationHandler()->paste(); 756 currentSession()->emulationHandler()->paste();
761} 757}
762 758
763/* 759/*
764 * Save the session 760 * Save the session
765 */ 761 */
766 762
767void MainWindow::slotSaveSession() { 763void MainWindow::slotSaveSession() {
768 if (!currentSession() ) { 764 if (!currentSession() ) {
769 QMessageBox::information(this, tr("Save Connection"), 765 QMessageBox::information(this, tr("Save Connection"),
770 tr("<qt>There is no Connection.</qt>"), 1 ); 766 tr("<qt>There is no Connection.</qt>"), 1 );
771 return; 767 return;
772 } 768 }
773 manager()->add( currentSession()->profile() ); 769 manager()->add( currentSession()->profile() );
774 manager()->save(); 770 manager()->save();
775 populateProfiles(); 771 populateProfiles();
776} 772}
777 773
778 774
779 775
780void MainWindow::slotSaveLog() { 776void MainWindow::slotSaveLog() {
781 777
782 if( currentSession()->emulationHandler()->isLogging() ) { 778 if( currentSession()->emulationHandler()->isLogging() ) {
783 DocLnk nf; 779 DocLnk nf;
784 QString m_logName = currentSession()->emulationHandler()->logFileName(); 780 QString m_logName = currentSession()->emulationHandler()->logFileName();
785 QFileInfo info(m_logName); 781 QFileInfo info(m_logName);
786 nf.setType("text/plain"); 782 nf.setType("text/plain");
787 nf.setFile(m_logName); 783 nf.setFile(m_logName);
788 nf.setName(info.fileName()); 784 nf.setName(info.fileName());
789 nf.writeLink(); 785 nf.writeLink();
790 m_recordLog->setText( tr("Start log") ); 786 m_recordLog->setText( tr("Start log") );
791 m_recordingLog = false; 787 m_recordingLog = false;
792 currentSession()->emulationHandler()->clearLog(); 788 currentSession()->emulationHandler()->clearLog();
793 } else { 789 } else {
794 QMap<QString, QStringList> map; 790 QMap<QString, QStringList> map;
795 QStringList text; 791 QStringList text;
796 text << "text/plain"; 792 text << "text/plain";
797 map.insert(tr("Log"), text ); 793 map.insert(tr("Log"), text );
798 Opie::Core::OConfig cfg("opie-console"); 794 Opie::Core::OConfig cfg("opie-console");
799 cfg.setGroup("defaults"); 795 cfg.setGroup("defaults");
800 QString startDir = cfg.readEntry("defaultlogdir", QPEApplication::documentDir() ); 796 QString startDir = cfg.readEntry("defaultlogdir", QPEApplication::documentDir() );
801 QString m_logName = OFileDialog::getSaveFileName(2, startDir, QString::null, map, 0, startDir); 797 QString m_logName = OFileDialog::getSaveFileName(2, startDir, QString::null, map, 0, startDir);
802 if (m_logName.isEmpty() ) return; 798 if (m_logName.isEmpty() ) return;
803 799
804 m_recordLog->setText( tr("Stop log") ); 800 m_recordLog->setText( tr("Stop log") );
805 m_recordingLog = true; 801 m_recordingLog = true;
806 currentSession()->emulationHandler()->startLogging(m_logName); 802 currentSession()->emulationHandler()->startLogging(m_logName);
807 } 803 }
808} 804}
809 805
810void MainWindow::slotSaveHistory() { 806void MainWindow::slotSaveHistory() {
811 QMap<QString, QStringList> map; 807 QMap<QString, QStringList> map;
812 QStringList text; 808 QStringList text;
813 text << "text/plain"; 809 text << "text/plain";
814 map.insert(tr("History"), text ); 810 map.insert(tr("History"), text );
815 QString filename = OFileDialog::getSaveFileName(2, QPEApplication::documentDir(), QString::null, map); 811 QString filename = OFileDialog::getSaveFileName(2, QPEApplication::documentDir(), QString::null, map);
816 if (filename.isEmpty() ) return; 812 if (filename.isEmpty() ) return;
817 813
818 QFileInfo info(filename); 814 QFileInfo info(filename);
819 815
820 DocLnk nf; 816 DocLnk nf;
821 nf.setType("text/plain"); 817 nf.setType("text/plain");
822 nf.setFile(filename); 818 nf.setFile(filename);
823 nf.setName(info.fileName()); 819 nf.setName(info.fileName());
diff --git a/noncore/apps/opie-reader/CFilter.cpp b/noncore/apps/opie-reader/CFilter.cpp
index 25cdfae..a4ea60a 100644
--- a/noncore/apps/opie-reader/CFilter.cpp
+++ b/noncore/apps/opie-reader/CFilter.cpp
@@ -408,193 +408,193 @@ void repalm::getch(tchar& ch, CStyle& sty, unsigned long& pos)
408 break; 408 break;
409 case 0x8c: 409 case 0x8c:
410 ch = 0x0152; 410 ch = 0x0152;
411 break; 411 break;
412/* 412/*
413 case 0x8e: 413 case 0x8e:
414 ch = 0x017d; 414 ch = 0x017d;
415 break; 415 break;
416*/ 416*/
417 case 0x91: 417 case 0x91:
418 ch = 0x2018; 418 ch = 0x2018;
419 break; 419 break;
420 case 0x92: 420 case 0x92:
421 ch = 0x2019; 421 ch = 0x2019;
422 break; 422 break;
423 case 0x93: 423 case 0x93:
424 ch = 0x201c; 424 ch = 0x201c;
425 break; 425 break;
426 case 0x94: 426 case 0x94:
427 ch = 0x201d; 427 ch = 0x201d;
428 break; 428 break;
429 case 0x95: 429 case 0x95:
430 ch = 0x2022; 430 ch = 0x2022;
431 break; 431 break;
432 case 0x96: 432 case 0x96:
433 ch = 0x2013; 433 ch = 0x2013;
434 break; 434 break;
435 case 0x97: 435 case 0x97:
436 ch = 0x2014; 436 ch = 0x2014;
437 break; 437 break;
438 case 0x98: 438 case 0x98:
439 ch = 0x02dc; 439 ch = 0x02dc;
440 break; 440 break;
441 case 0x99: 441 case 0x99:
442 ch = 0x2122; 442 ch = 0x2122;
443 break; 443 break;
444 case 0x9a: 444 case 0x9a:
445 ch = 0x0161; 445 ch = 0x0161;
446 break; 446 break;
447 case 0x9b: 447 case 0x9b:
448 ch = 0x203a; 448 ch = 0x203a;
449 break; 449 break;
450 case 0x9c: 450 case 0x9c:
451 ch = 0x0153; 451 ch = 0x0153;
452 break; 452 break;
453 case 0x9e: 453 case 0x9e:
454 ch = 0x017e; 454 ch = 0x017e;
455 break; 455 break;
456 case 0x9f: 456 case 0x9f:
457 ch = 0x0178; 457 ch = 0x0178;
458 break; 458 break;
459 case 0x18: 459 case 0x18:
460 ch = 0x2026; 460 ch = 0x2026;
461 break; 461 break;
462 case 0x19: 462 case 0x19:
463 ch = 0x2007; 463 ch = 0x2007;
464 break; 464 break;
465 case 0x8d: 465 case 0x8d:
466 ch = 0x2662; 466 ch = 0x2662;
467 break; 467 break;
468 case 0x8e: 468 case 0x8e:
469 ch = 0x2663; 469 ch = 0x2663;
470 break; 470 break;
471 case 0x8f: 471 case 0x8f:
472 ch = 0x2661; 472 ch = 0x2661;
473 break; 473 break;
474 case 0x90: 474 case 0x90:
475 ch = 0x2660; 475 ch = 0x2660;
476 break; 476 break;
477 default: 477 default:
478 break; 478 break;
479 } 479 }
480} 480}
481 481
482//static tchar nextpart[] = { 'C','l','i','c','k',' ','h','e','r','e',' ','f','o','r',' ','t','h','e',' ','n','e','x','t',' ','p','a','r','t',0 }; 482//static tchar nextpart[] = { 'C','l','i','c','k',' ','h','e','r','e',' ','f','o','r',' ','t','h','e',' ','n','e','x','t',' ','p','a','r','t',0 };
483//static tchar prevpart[] = { 'C','l','i','c','k',' ','h','e','r','e',' ','f','o','r',' ','t','h','e',' ','p','r','e','v','i','o','u','s',' ','p','a','r','t',0 }; 483//static tchar prevpart[] = { 'C','l','i','c','k',' ','h','e','r','e',' ','f','o','r',' ','t','h','e',' ','p','r','e','v','i','o','u','s',' ','p','a','r','t',0 };
484 484
485void DePluck::getch(tchar& ch, CStyle& sty, unsigned long& pos) 485void DePluck::getch(tchar& ch, CStyle& sty, unsigned long& pos)
486{ 486{
487 if (m_buffed > 0) 487 if (m_buffed > 0)
488 { 488 {
489 sty = m_laststyle; 489 sty = m_laststyle;
490 ch = nextpart[m_current++]; 490 ch = nextpart[m_current++];
491 if (m_current == m_buffed) 491 if (m_current == m_buffed)
492 { 492 {
493 m_current = m_buffed = 0; 493 m_current = m_buffed = 0;
494 } 494 }
495 } 495 }
496 else 496 else
497 { 497 {
498 if (m_buffer != 0) 498 if (m_buffer != 0)
499 { 499 {
500 ch = m_buffer; 500 ch = m_buffer;
501 m_buffer = 0; 501 m_buffer = 0;
502 return; 502 return;
503 } 503 }
504 unsigned long lnk, lnkoff; 504 unsigned long lnk = 0, lnkoff = 0;
505 do 505 do
506 { 506 {
507 if (nextpart[m_buffed] == 0) break; 507 if (nextpart[m_buffed] == 0) break;
508 parent->getch(ch, sty, pos); 508 parent->getch(ch, sty, pos);
509 m_laststyle = sty; 509 m_laststyle = sty;
510 if (sty.getLink()) 510 if (sty.getLink())
511 { 511 {
512 lnk = sty.getData(); 512 lnk = sty.getData();
513 lnkoff = sty.getOffset(); 513 lnkoff = sty.getOffset();
514 } 514 }
515 } while (ch == nextpart[m_buffed] && sty.getLink() && ++m_buffed); 515 } while (ch == nextpart[m_buffed] && sty.getLink() && ++m_buffed);
516 m_current = 0; 516 m_current = 0;
517 if (nextpart[m_buffed] == 0) 517 if (nextpart[m_buffed] == 0)
518 { 518 {
519 m_buffed = 0; 519 m_buffed = 0;
520 QString dmy, dmy2; 520 QString dmy, dmy2;
521 parent->hyperlink(lnk, lnkoff, dmy, dmy2); 521 parent->hyperlink(lnk, lnkoff, dmy, dmy2);
522 do 522 do
523 { 523 {
524 parent->getch(ch, sty, pos); 524 parent->getch(ch, sty, pos);
525 } 525 }
526 while (ch != 10); 526 while (ch != 10);
527 parent->getch(ch, sty, pos); 527 parent->getch(ch, sty, pos);
528 } 528 }
529 else if (m_buffed > 0) 529 else if (m_buffed > 0)
530 { 530 {
531 m_buffer = ch; 531 m_buffer = ch;
532 ch = nextpart[0]; 532 ch = nextpart[0];
533 if (m_buffed == 1) 533 if (m_buffed == 1)
534 { 534 {
535 m_buffed = 0; 535 m_buffed = 0;
536 } 536 }
537 else m_current = 1; 537 else m_current = 1;
538 } 538 }
539 } 539 }
540 540
541 return; 541 return;
542} 542}
543 543
544HighlightFilter::HighlightFilter(QTReader* _p) : pReader(_p), lastpos(0), nextpos(0), red(255), green(255), blue(255) 544HighlightFilter::HighlightFilter(QTReader* _p) : pReader(_p), lastpos(0), nextpos(0), red(255), green(255), blue(255)
545{ 545{
546} 546}
547 547
548#include "Bkmks.h" 548#include "Bkmks.h"
549#include "QTReader.h" 549#include "QTReader.h"
550 550
551void HighlightFilter::refresh(unsigned long pos) 551void HighlightFilter::refresh(unsigned long pos)
552{ 552{
553 bkmks = pReader->Bkmklist(); 553 bkmks = pReader->Bkmklist();
554 554
555 red = green = blue = 255; 555 red = green = blue = 255;
556 556
557 if (bkmks == NULL) 557 if (bkmks == NULL)
558 { 558 {
559 lastpos = 0; 559 lastpos = 0;
560 nextpos = 0xffffffff; 560 nextpos = 0xffffffff;
561 } 561 }
562 else 562 else
563 { 563 {
564 lastpos = 0; 564 lastpos = 0;
565 nextpos = 0xffffffff; 565 nextpos = 0xffffffff;
566 for (CList<Bkmk>::iterator i = bkmks->begin(); i != bkmks->end(); i++) 566 for (CList<Bkmk>::iterator i = bkmks->begin(); i != bkmks->end(); i++)
567 { 567 {
568 if ((*i).value() <= pos && pos < (*i).value2()) 568 if ((*i).value() <= pos && pos < (*i).value2())
569 { 569 {
570 red = i->red(); 570 red = i->red();
571 green = i->green(); 571 green = i->green();
572 blue = i->blue(); 572 blue = i->blue();
573 lastpos = (*i).value(); 573 lastpos = (*i).value();
574 nextpos = (*i).value2(); 574 nextpos = (*i).value2();
575 break; 575 break;
576 } 576 }
577 if ((*i).value() > pos) 577 if ((*i).value() > pos)
578 { 578 {
579 nextpos = (*i).value(); 579 nextpos = (*i).value();
580 break; 580 break;
581 } 581 }
582 lastpos = (*i).value(); 582 lastpos = (*i).value();
583 } 583 }
584 } 584 }
585} 585}
586 586
587void HighlightFilter::getch(tchar& ch, CStyle& sty, unsigned long& pos) 587void HighlightFilter::getch(tchar& ch, CStyle& sty, unsigned long& pos)
588{ 588{
589 parent->getch(ch, sty, pos); 589 parent->getch(ch, sty, pos);
590 if (bkmks != pReader->Bkmklist() || pos <= lastpos || pos >= nextpos) 590 if (bkmks != pReader->Bkmklist() || pos <= lastpos || pos >= nextpos)
591 { 591 {
592 // qDebug("Recalc <%lu, %lu, %lu>", lastpos, pos, nextpos); 592 // qDebug("Recalc <%lu, %lu, %lu>", lastpos, pos, nextpos);
593 refresh(pos); 593 refresh(pos);
594 // qDebug("Recalc(2) <%lu, %lu, %lu>", lastpos, pos, nextpos); 594 // qDebug("Recalc(2) <%lu, %lu, %lu>", lastpos, pos, nextpos);
595 } 595 }
596 int r = sty.bRed(), g = sty.bGreen(), b = sty.bBlue(); 596 int r = sty.bRed(), g = sty.bGreen(), b = sty.bBlue();
597 if (r == 255 && g == 255 && b == 255) 597 if (r == 255 && g == 255 && b == 255)
598 { 598 {
599 sty.setBackground(red, green, blue); 599 sty.setBackground(red, green, blue);
600 } 600 }
diff --git a/noncore/apps/opie-reader/CRegExp.cpp b/noncore/apps/opie-reader/CRegExp.cpp
index 6318d28..e3194df 100644
--- a/noncore/apps/opie-reader/CRegExp.cpp
+++ b/noncore/apps/opie-reader/CRegExp.cpp
@@ -16,371 +16,371 @@ tchar CRegExpFilt::escapedchar(tchar c)
16 return '\"'; 16 return '\"';
17 break; 17 break;
18 case 'a': 18 case 'a':
19 return '\a'; 19 return '\a';
20 break; 20 break;
21 case 'b': 21 case 'b':
22 return '\b'; 22 return '\b';
23 break; 23 break;
24 case 'f': 24 case 'f':
25 return '\f'; 25 return '\f';
26 break; 26 break;
27 case 'n': 27 case 'n':
28 return '\n'; 28 return '\n';
29 break; 29 break;
30 case 'r': 30 case 'r':
31 return '\r'; 31 return '\r';
32 break; 32 break;
33 case 't': 33 case 't':
34 return '\t'; 34 return '\t';
35 break; 35 break;
36 case 'v': 36 case 'v':
37 return '\v'; 37 return '\v';
38 break; 38 break;
39 default: 39 default:
40 return c; 40 return c;
41 break; 41 break;
42 } 42 }
43} 43}
44 44
45void CRegExpFilt::regchar(tchar c, bool insens) 45void CRegExpFilt::regchar(tchar c, bool insens)
46{ 46{
47 if (insens) 47 if (insens)
48 { 48 {
49 tchar t = upper(c); 49 tchar t = upper(c);
50 CV[t] = 0; 50 CV[t] = 0;
51 t = lower(c); 51 t = lower(c);
52 CV[t] = 0; 52 CV[t] = 0;
53 } 53 }
54 else 54 else
55 { 55 {
56 CV[c] = 0; 56 CV[c] = 0;
57 } 57 }
58} 58}
59 59
60void CRegExpFilt::prepreprocessing(const QString& pat, bool insens) 60void CRegExpFilt::prepreprocessing(const QString& pat, bool insens)
61{ 61{
62 for (unsigned int p = 0; p < pat.length(); p++) 62 for (unsigned int p = 0; p < pat.length(); p++)
63 { 63 {
64#ifdef _WINDOWS 64#ifdef _WINDOWS
65 switch (pat.at(p).unicode()) 65 switch (pat.at(p).unicode())
66#else 66#else
67 switch (pat[p].unicode()) 67 switch (pat[p].unicode())
68#endif 68#endif
69 { 69 {
70 case '{': 70 case '{':
71 { 71 {
72 break; 72 break;
73 } 73 }
74 case '}': 74 case '}':
75 { 75 {
76 break; 76 break;
77 } 77 }
78 case '^': 78 case '^':
79 { 79 {
80 break; 80 break;
81 } 81 }
82 case '.' : 82 case '.' :
83 { 83 {
84 break; 84 break;
85 } 85 }
86 case '#': 86 case '#':
87 { 87 {
88 p++; 88 p++;
89#ifdef _WINDOWS 89#ifdef _WINDOWS
90 while ('0' <= pat.at(p).unicode() && pat.at(p).unicode() <= '9') 90 while ('0' <= pat.at(p).unicode() && pat.at(p).unicode() <= '9')
91#else 91#else
92 while ('0' <= pat[p].unicode() && pat[p].unicode() <= '9') 92 while ('0' <= pat[p].unicode() && pat[p].unicode() <= '9')
93#endif 93#endif
94 { 94 {
95 } 95 }
96 p--; 96 p--;
97 break; 97 break;
98 } 98 }
99 case '\\' : 99 case '\\' :
100 { 100 {
101#ifdef _WINDOWS 101#ifdef _WINDOWS
102 tchar c = escapedchar(pat.at(++p).unicode()); 102 tchar c = escapedchar(pat.at(++p).unicode());
103#else 103#else
104 tchar c = escapedchar(pat[++p].unicode()); 104 tchar c = escapedchar(pat[++p].unicode());
105#endif 105#endif
106 regchar(c, insens); 106 regchar(c, insens);
107 break; 107 break;
108 } 108 }
109 109
110 case '[' : 110 case '[' :
111 { 111 {
112 tchar clast; 112 tchar clast = 0;
113 bool invert = false; 113 bool invert = false;
114 tchar c; 114 tchar c;
115#ifdef _WINDOWS 115#ifdef _WINDOWS
116 if (pat.at(p+1).unicode() == '^') 116 if (pat.at(p+1).unicode() == '^')
117#else 117#else
118 if (pat[p+1].unicode() == '^') 118 if (pat[p+1].unicode() == '^')
119#endif 119#endif
120 { 120 {
121 p++; 121 p++;
122 invert = true; 122 invert = true;
123 } 123 }
124#ifdef _WINDOWS 124#ifdef _WINDOWS
125 while ((c = pat.at(++p).unicode()) != ']') 125 while ((c = pat.at(++p).unicode()) != ']')
126#else 126#else
127 while ((c = pat[++p].unicode()) != ']') 127 while ((c = pat[++p].unicode()) != ']')
128#endif 128#endif
129 { 129 {
130 if (c == '\\') 130 if (c == '\\')
131 { 131 {
132#ifdef _WINDOWS 132#ifdef _WINDOWS
133 c = escapedchar(pat.at(++p).unicode()); 133 c = escapedchar(pat.at(++p).unicode());
134#else 134#else
135 c = escapedchar(pat[++p].unicode()); 135 c = escapedchar(pat[++p].unicode());
136#endif 136#endif
137 if (c == ']') break; 137 if (c == ']') break;
138 } 138 }
139 if (c == '-') 139 if (c == '-')
140 { 140 {
141#ifdef _WINDOWS 141#ifdef _WINDOWS
142 c = pat.at(++p).unicode(); 142 c = pat.at(++p).unicode();
143#else 143#else
144 c = pat[++p].unicode(); 144 c = pat[++p].unicode();
145#endif 145#endif
146 for (tchar j = clast; j <= c; j++) 146 for (tchar j = clast; j <= c; j++)
147 { 147 {
148 regchar(j, insens); 148 regchar(j, insens);
149 } 149 }
150 } 150 }
151 else 151 else
152 { 152 {
153 regchar(c, insens); 153 regchar(c, insens);
154 } 154 }
155 clast = c; 155 clast = c;
156 } 156 }
157 break; 157 break;
158 } 158 }
159 default : 159 default :
160 { 160 {
161#ifdef _WINDOWS 161#ifdef _WINDOWS
162 regchar(pat.at(p).unicode(), insens); 162 regchar(pat.at(p).unicode(), insens);
163#else 163#else
164 regchar(pat[p].unicode(), insens); 164 regchar(pat[p].unicode(), insens);
165#endif 165#endif
166 break; 166 break;
167 } 167 }
168 } 168 }
169 } 169 }
170 /* 170 /*
171 for (iter i = CV.begin(); i != CV.end(); ++i) 171 for (iter i = CV.begin(); i != CV.end(); ++i)
172 { 172 {
173 printf("Pre: [%u]\n", i.first()); 173 printf("Pre: [%u]\n", i.first());
174 } 174 }
175 */ 175 */
176 CV[0] = 0; 176 CV[0] = 0;
177} 177}
178 178
179unsigned int CRegExpFilt::preprocessing(const QString& pat, bool insens) 179unsigned int CRegExpFilt::preprocessing(const QString& pat, bool insens)
180{ 180{
181 prepreprocessing(pat, insens); 181 prepreprocessing(pat, insens);
182 qDebug("PrePreProcessing done"); 182 qDebug("PrePreProcessing done");
183 unsigned int p, m; 183 unsigned int p, m;
184 bool inkeep = false; 184 bool inkeep = false;
185 keep = 0; 185 keep = 0;
186 replace = 0; 186 replace = 0;
187 for (unsigned int j = 0; j < WORD_SIZE; j++) 187 for (unsigned int j = 0; j < WORD_SIZE; j++)
188 { 188 {
189 bit[j] = (1 << (WORD_SIZE -j -1)); 189 bit[j] = (1 << (WORD_SIZE -j -1));
190 lfcnt[j] = 0; 190 lfcnt[j] = 0;
191 } 191 }
192 192
193 for (p = 0, m = 0; p < pat.length(); p++) 193 for (p = 0, m = 0; p < pat.length(); p++)
194 { 194 {
195 qDebug("m is %u", m); 195 qDebug("m is %u", m);
196 if (inkeep) keep |= bit[m]; 196 if (inkeep) keep |= bit[m];
197#ifdef _WINDOWS 197#ifdef _WINDOWS
198 switch (pat.at(p).unicode()) 198 switch (pat.at(p).unicode())
199#else 199#else
200 switch (pat[p].unicode()) 200 switch (pat[p].unicode())
201#endif 201#endif
202 { 202 {
203 case '{': 203 case '{':
204 { 204 {
205 inkeep = true; 205 inkeep = true;
206 break; 206 break;
207 } 207 }
208 case '}': 208 case '}':
209 { 209 {
210 keep ^= bit[m]; 210 keep ^= bit[m];
211 inkeep = false; 211 inkeep = false;
212 break; 212 break;
213 } 213 }
214 case '^': 214 case '^':
215 { 215 {
216 replace |= bit[m]; 216 replace |= bit[m];
217 lfcnt[m]++; 217 lfcnt[m]++;
218 break; 218 break;
219 } 219 }
220 case '.' : 220 case '.' :
221 { 221 {
222 for (iter j = CV.begin(); j != CV.end(); ++j) CV[j.first()] |= bit[m]; 222 for (iter j = CV.begin(); j != CV.end(); ++j) CV[j.first()] |= bit[m];
223 m++; 223 m++;
224 break; 224 break;
225 } 225 }
226 case '#': 226 case '#':
227 { 227 {
228 if (m > 0) 228 if (m > 0)
229 { 229 {
230 p++; 230 p++;
231 int count = 0; 231 int count = 0;
232#ifdef _WINDOWS 232#ifdef _WINDOWS
233 while ('0' <= pat.at(p).unicode() && pat.at(p).unicode() <= '9') 233 while ('0' <= pat.at(p).unicode() && pat.at(p).unicode() <= '9')
234#else 234#else
235 while ('0' <= pat[p].unicode() && pat[p].unicode() <= '9') 235 while ('0' <= pat[p].unicode() && pat[p].unicode() <= '9')
236#endif 236#endif
237 { 237 {
238#ifdef _WINDOWS 238#ifdef _WINDOWS
239 count = 10*count + pat.at(p++).unicode() - '0'; 239 count = 10*count + pat.at(p++).unicode() - '0';
240#else 240#else
241 count = 10*count + pat[p++].unicode() - '0'; 241 count = 10*count + pat[p++].unicode() - '0';
242#endif 242#endif
243 } 243 }
244 p--; 244 p--;
245 count = count-1; 245 count = count-1;
246 unsigned int mask = 0; 246 unsigned int mask = 0;
247 for (unsigned int i = m; i < m+count; i++) 247 for (unsigned int i = m; i < m+count; i++)
248 { 248 {
249 mask |= bit[i]; 249 mask |= bit[i];
250 } 250 }
251 251
252 for (iter it = CV.begin(); it != CV.end(); ++it) 252 for (iter it = CV.begin(); it != CV.end(); ++it)
253 { 253 {
254 if (CV[it.first()] & bit[m-1]) 254 if (CV[it.first()] & bit[m-1])
255 { 255 {
256 CV[it.first()] |= mask; 256 CV[it.first()] |= mask;
257 } 257 }
258 } 258 }
259 if (keep & bit[m-1]) keep |= mask; 259 if (keep & bit[m-1]) keep |= mask;
260 m += count; 260 m += count;
261 } 261 }
262 else 262 else
263 { 263 {
264 p++; 264 p++;
265 } 265 }
266 break; 266 break;
267 } 267 }
268 case '\\' : 268 case '\\' :
269 { 269 {
270#ifdef _WINDOWS 270#ifdef _WINDOWS
271 tchar c = escapedchar(pat.at(++p).unicode()); 271 tchar c = escapedchar(pat.at(++p).unicode());
272#else 272#else
273 tchar c = escapedchar(pat[++p].unicode()); 273 tchar c = escapedchar(pat[++p].unicode());
274#endif 274#endif
275 if (insens) 275 if (insens)
276 { 276 {
277 CV[upper(c)] |= bit[m]; 277 CV[upper(c)] |= bit[m];
278 CV[lower(c)] |= bit[m]; 278 CV[lower(c)] |= bit[m];
279 } 279 }
280 else 280 else
281 { 281 {
282 CV[c] |= bit[m]; 282 CV[c] |= bit[m];
283 } 283 }
284 m++; 284 m++;
285 break; 285 break;
286 } 286 }
287 287
288 case '[' : 288 case '[' :
289 { 289 {
290 tchar c, clast; 290 tchar c, clast = 0;
291 bool invert = false; 291 bool invert = false;
292#ifdef _WINDOWS 292#ifdef _WINDOWS
293 if (pat.at(p+1).unicode() == '^') 293 if (pat.at(p+1).unicode() == '^')
294#else 294#else
295 if (pat[p+1].unicode() == '^') 295 if (pat[p+1].unicode() == '^')
296#endif 296#endif
297 { 297 {
298 p++; 298 p++;
299 invert = true; 299 invert = true;
300 } 300 }
301#ifdef _WINDOWS 301#ifdef _WINDOWS
302 while ((c = pat.at(++p).unicode()) != ']') 302 while ((c = pat.at(++p).unicode()) != ']')
303#else 303#else
304 while ((c = pat[++p].unicode()) != ']') 304 while ((c = pat[++p].unicode()) != ']')
305#endif 305#endif
306 { 306 {
307 if (c == '\\') 307 if (c == '\\')
308 { 308 {
309#ifdef _WINDOWS 309#ifdef _WINDOWS
310 c = escapedchar(pat.at(++p).unicode()); 310 c = escapedchar(pat.at(++p).unicode());
311#else 311#else
312 c = escapedchar(pat[++p].unicode()); 312 c = escapedchar(pat[++p].unicode());
313#endif 313#endif
314 if (c == ']') break; 314 if (c == ']') break;
315 } 315 }
316 if (c == '-') 316 if (c == '-')
317 { 317 {
318#ifdef _WINDOWS 318#ifdef _WINDOWS
319 c = pat.at(++p).unicode(); 319 c = pat.at(++p).unicode();
320#else 320#else
321 c = pat[++p].unicode(); 321 c = pat[++p].unicode();
322#endif 322#endif
323 for (tchar j = clast; j <= c; j++) 323 for (tchar j = clast; j <= c; j++)
324 { 324 {
325 if (insens) 325 if (insens)
326 { 326 {
327 iter it; 327 iter it;
328 if ((it = CV.find(upper(j))) != CV.end()) 328 if ((it = CV.find(upper(j))) != CV.end())
329 CV[it] |= bit[m]; 329 CV[it] |= bit[m];
330 else 330 else
331 CV[0] |= bit[m]; 331 CV[0] |= bit[m];
332 if ((it = CV.find(lower(j))) != CV.end()) 332 if ((it = CV.find(lower(j))) != CV.end())
333 CV[it] |= bit[m]; 333 CV[it] |= bit[m];
334 else 334 else
335 CV[0] |= bit[m]; 335 CV[0] |= bit[m];
336 } 336 }
337 else 337 else
338 { 338 {
339 iter it; 339 iter it;
340 if ((it = CV.find(j)) != CV.end()) 340 if ((it = CV.find(j)) != CV.end())
341 CV[it] |= bit[m]; 341 CV[it] |= bit[m];
342 else 342 else
343 { 343 {
344 CV[0] |= bit[m]; 344 CV[0] |= bit[m];
345 } 345 }
346 } 346 }
347 } 347 }
348 } 348 }
349 else 349 else
350 { 350 {
351 if (insens) 351 if (insens)
352 { 352 {
353 iter it; 353 iter it;
354 if ((it = CV.find(upper(c))) != CV.end()) 354 if ((it = CV.find(upper(c))) != CV.end())
355 CV[it] |= bit[m]; 355 CV[it] |= bit[m];
356 else 356 else
357 CV[0] |= bit[m]; 357 CV[0] |= bit[m];
358 if ((it = CV.find(lower(c))) != CV.end()) 358 if ((it = CV.find(lower(c))) != CV.end())
359 CV[it] |= bit[m]; 359 CV[it] |= bit[m];
360 else 360 else
361 CV[0] |= bit[m]; 361 CV[0] |= bit[m];
362 } 362 }
363 else 363 else
364 { 364 {
365 iter it; 365 iter it;
366 if ((it = CV.find(c)) != CV.end()) 366 if ((it = CV.find(c)) != CV.end())
367 CV[it] |= bit[m]; 367 CV[it] |= bit[m];
368 else 368 else
369 CV[0] |= bit[m]; 369 CV[0] |= bit[m];
370 } 370 }
371 } 371 }
372 clast = c; 372 clast = c;
373 } 373 }
374 if (invert) 374 if (invert)
375 { 375 {
376 for (iter i = CV.begin(); i != CV.end(); ++i) 376 for (iter i = CV.begin(); i != CV.end(); ++i)
377 { 377 {
378 CV[i.first()] ^= bit[m]; 378 CV[i.first()] ^= bit[m];
379 } 379 }
380 } 380 }
381 m++; 381 m++;
382 break; 382 break;
383 } 383 }
384 default : 384 default :
385 { 385 {
386#ifdef _WINDOWS 386#ifdef _WINDOWS
diff --git a/noncore/apps/opie-reader/Palm2QImage.cpp b/noncore/apps/opie-reader/Palm2QImage.cpp
index 361755f..09cad1c 100644
--- a/noncore/apps/opie-reader/Palm2QImage.cpp
+++ b/noncore/apps/opie-reader/Palm2QImage.cpp
@@ -32,268 +32,268 @@
32#define PALM_COMPRESSION_SCANLINE 0x00 32#define PALM_COMPRESSION_SCANLINE 0x00
33#define PALM_COMPRESSION_RLE 0x01 33#define PALM_COMPRESSION_RLE 0x01
34#define PALM_COMPRESSION_PACKBITS 0x02 34#define PALM_COMPRESSION_PACKBITS 0x02
35#define PALM_COMPRESSION_NONE 0xFF 35#define PALM_COMPRESSION_NONE 0xFF
36 36
37#define PALM_COLORMAP_SIZE 232 37#define PALM_COLORMAP_SIZE 232
38 38
39typedef struct { 39typedef struct {
40 unsigned char red; 40 unsigned char red;
41 unsigned char green; 41 unsigned char green;
42 unsigned char blue; 42 unsigned char blue;
43} ColorMapEntry; 43} ColorMapEntry;
44 44
45static ColorMapEntry Palm8BitColormap[] = { 45static ColorMapEntry Palm8BitColormap[] = {
46 { 255, 255, 255 }, { 255, 204, 255 }, { 255, 153, 255 }, { 255, 102, 255 }, 46 { 255, 255, 255 }, { 255, 204, 255 }, { 255, 153, 255 }, { 255, 102, 255 },
47 { 255, 51, 255 }, { 255, 0, 255 }, { 255, 255, 204 }, { 255, 204, 204 }, 47 { 255, 51, 255 }, { 255, 0, 255 }, { 255, 255, 204 }, { 255, 204, 204 },
48 { 255, 153, 204 }, { 255, 102, 204 }, { 255, 51, 204 }, { 255, 0, 204 }, 48 { 255, 153, 204 }, { 255, 102, 204 }, { 255, 51, 204 }, { 255, 0, 204 },
49 { 255, 255, 153 }, { 255, 204, 153 }, { 255, 153, 153 }, { 255, 102, 153 }, 49 { 255, 255, 153 }, { 255, 204, 153 }, { 255, 153, 153 }, { 255, 102, 153 },
50 { 255, 51, 153 }, { 255, 0, 153 }, { 204, 255, 255 }, { 204, 204, 255 }, 50 { 255, 51, 153 }, { 255, 0, 153 }, { 204, 255, 255 }, { 204, 204, 255 },
51 { 204, 153, 255 }, { 204, 102, 255 }, { 204, 51, 255 }, { 204, 0, 255 }, 51 { 204, 153, 255 }, { 204, 102, 255 }, { 204, 51, 255 }, { 204, 0, 255 },
52 { 204, 255, 204 }, { 204, 204, 204 }, { 204, 153, 204 }, { 204, 102, 204 }, 52 { 204, 255, 204 }, { 204, 204, 204 }, { 204, 153, 204 }, { 204, 102, 204 },
53 { 204, 51, 204 }, { 204, 0, 204 }, { 204, 255, 153 }, { 204, 204, 153 }, 53 { 204, 51, 204 }, { 204, 0, 204 }, { 204, 255, 153 }, { 204, 204, 153 },
54 { 204, 153, 153 }, { 204, 102, 153 }, { 204, 51, 153 }, { 204, 0, 153 }, 54 { 204, 153, 153 }, { 204, 102, 153 }, { 204, 51, 153 }, { 204, 0, 153 },
55 { 153, 255, 255 }, { 153, 204, 255 }, { 153, 153, 255 }, { 153, 102, 255 }, 55 { 153, 255, 255 }, { 153, 204, 255 }, { 153, 153, 255 }, { 153, 102, 255 },
56 { 153, 51, 255 }, { 153, 0, 255 }, { 153, 255, 204 }, { 153, 204, 204 }, 56 { 153, 51, 255 }, { 153, 0, 255 }, { 153, 255, 204 }, { 153, 204, 204 },
57 { 153, 153, 204 }, { 153, 102, 204 }, { 153, 51, 204 }, { 153, 0, 204 }, 57 { 153, 153, 204 }, { 153, 102, 204 }, { 153, 51, 204 }, { 153, 0, 204 },
58 { 153, 255, 153 }, { 153, 204, 153 }, { 153, 153, 153 }, { 153, 102, 153 }, 58 { 153, 255, 153 }, { 153, 204, 153 }, { 153, 153, 153 }, { 153, 102, 153 },
59 { 153, 51, 153 }, { 153, 0, 153 }, { 102, 255, 255 }, { 102, 204, 255 }, 59 { 153, 51, 153 }, { 153, 0, 153 }, { 102, 255, 255 }, { 102, 204, 255 },
60 { 102, 153, 255 }, { 102, 102, 255 }, { 102, 51, 255 }, { 102, 0, 255 }, 60 { 102, 153, 255 }, { 102, 102, 255 }, { 102, 51, 255 }, { 102, 0, 255 },
61 { 102, 255, 204 }, { 102, 204, 204 }, { 102, 153, 204 }, { 102, 102, 204 }, 61 { 102, 255, 204 }, { 102, 204, 204 }, { 102, 153, 204 }, { 102, 102, 204 },
62 { 102, 51, 204 }, { 102, 0, 204 }, { 102, 255, 153 }, { 102, 204, 153 }, 62 { 102, 51, 204 }, { 102, 0, 204 }, { 102, 255, 153 }, { 102, 204, 153 },
63 { 102, 153, 153 }, { 102, 102, 153 }, { 102, 51, 153 }, { 102, 0, 153 }, 63 { 102, 153, 153 }, { 102, 102, 153 }, { 102, 51, 153 }, { 102, 0, 153 },
64 { 51, 255, 255 }, { 51, 204, 255 }, { 51, 153, 255 }, { 51, 102, 255 }, 64 { 51, 255, 255 }, { 51, 204, 255 }, { 51, 153, 255 }, { 51, 102, 255 },
65 { 51, 51, 255 }, { 51, 0, 255 }, { 51, 255, 204 }, { 51, 204, 204 }, 65 { 51, 51, 255 }, { 51, 0, 255 }, { 51, 255, 204 }, { 51, 204, 204 },
66 { 51, 153, 204 }, { 51, 102, 204 }, { 51, 51, 204 }, { 51, 0, 204 }, 66 { 51, 153, 204 }, { 51, 102, 204 }, { 51, 51, 204 }, { 51, 0, 204 },
67 { 51, 255, 153 }, { 51, 204, 153 }, { 51, 153, 153 }, { 51, 102, 153 }, 67 { 51, 255, 153 }, { 51, 204, 153 }, { 51, 153, 153 }, { 51, 102, 153 },
68 { 51, 51, 153 }, { 51, 0, 153 }, { 0, 255, 255 }, { 0, 204, 255 }, 68 { 51, 51, 153 }, { 51, 0, 153 }, { 0, 255, 255 }, { 0, 204, 255 },
69 { 0, 153, 255 }, { 0, 102, 255 }, { 0, 51, 255 }, { 0, 0, 255 }, 69 { 0, 153, 255 }, { 0, 102, 255 }, { 0, 51, 255 }, { 0, 0, 255 },
70 { 0, 255, 204 }, { 0, 204, 204 }, { 0, 153, 204 }, { 0, 102, 204 }, 70 { 0, 255, 204 }, { 0, 204, 204 }, { 0, 153, 204 }, { 0, 102, 204 },
71 { 0, 51, 204 }, { 0, 0, 204 }, { 0, 255, 153 }, { 0, 204, 153 }, 71 { 0, 51, 204 }, { 0, 0, 204 }, { 0, 255, 153 }, { 0, 204, 153 },
72 { 0, 153, 153 }, { 0, 102, 153 }, { 0, 51, 153 }, { 0, 0, 153 }, 72 { 0, 153, 153 }, { 0, 102, 153 }, { 0, 51, 153 }, { 0, 0, 153 },
73 { 255, 255, 102 }, { 255, 204, 102 }, { 255, 153, 102 }, { 255, 102, 102 }, 73 { 255, 255, 102 }, { 255, 204, 102 }, { 255, 153, 102 }, { 255, 102, 102 },
74 { 255, 51, 102 }, { 255, 0, 102 }, { 255, 255, 51 }, { 255, 204, 51 }, 74 { 255, 51, 102 }, { 255, 0, 102 }, { 255, 255, 51 }, { 255, 204, 51 },
75 { 255, 153, 51 }, { 255, 102, 51 }, { 255, 51, 51 }, { 255, 0, 51 }, 75 { 255, 153, 51 }, { 255, 102, 51 }, { 255, 51, 51 }, { 255, 0, 51 },
76 { 255, 255, 0 }, { 255, 204, 0 }, { 255, 153, 0 }, { 255, 102, 0 }, 76 { 255, 255, 0 }, { 255, 204, 0 }, { 255, 153, 0 }, { 255, 102, 0 },
77 { 255, 51, 0 }, { 255, 0, 0 }, { 204, 255, 102 }, { 204, 204, 102 }, 77 { 255, 51, 0 }, { 255, 0, 0 }, { 204, 255, 102 }, { 204, 204, 102 },
78 { 204, 153, 102 }, { 204, 102, 102 }, { 204, 51, 102 }, { 204, 0, 102 }, 78 { 204, 153, 102 }, { 204, 102, 102 }, { 204, 51, 102 }, { 204, 0, 102 },
79 { 204, 255, 51 }, { 204, 204, 51 }, { 204, 153, 51 }, { 204, 102, 51 }, 79 { 204, 255, 51 }, { 204, 204, 51 }, { 204, 153, 51 }, { 204, 102, 51 },
80 { 204, 51, 51 }, { 204, 0, 51 }, { 204, 255, 0 }, { 204, 204, 0 }, 80 { 204, 51, 51 }, { 204, 0, 51 }, { 204, 255, 0 }, { 204, 204, 0 },
81 { 204, 153, 0 }, { 204, 102, 0 }, { 204, 51, 0 }, { 204, 0, 0 }, 81 { 204, 153, 0 }, { 204, 102, 0 }, { 204, 51, 0 }, { 204, 0, 0 },
82 { 153, 255, 102 }, { 153, 204, 102 }, { 153, 153, 102 }, { 153, 102, 102 }, 82 { 153, 255, 102 }, { 153, 204, 102 }, { 153, 153, 102 }, { 153, 102, 102 },
83 { 153, 51, 102 }, { 153, 0, 102 }, { 153, 255, 51 }, { 153, 204, 51 }, 83 { 153, 51, 102 }, { 153, 0, 102 }, { 153, 255, 51 }, { 153, 204, 51 },
84 { 153, 153, 51 }, { 153, 102, 51 }, { 153, 51, 51 }, { 153, 0, 51 }, 84 { 153, 153, 51 }, { 153, 102, 51 }, { 153, 51, 51 }, { 153, 0, 51 },
85 { 153, 255, 0 }, { 153, 204, 0 }, { 153, 153, 0 }, { 153, 102, 0 }, 85 { 153, 255, 0 }, { 153, 204, 0 }, { 153, 153, 0 }, { 153, 102, 0 },
86 { 153, 51, 0 }, { 153, 0, 0 }, { 102, 255, 102 }, { 102, 204, 102 }, 86 { 153, 51, 0 }, { 153, 0, 0 }, { 102, 255, 102 }, { 102, 204, 102 },
87 { 102, 153, 102 }, { 102, 102, 102 }, { 102, 51, 102 }, { 102, 0, 102 }, 87 { 102, 153, 102 }, { 102, 102, 102 }, { 102, 51, 102 }, { 102, 0, 102 },
88 { 102, 255, 51 }, { 102, 204, 51 }, { 102, 153, 51 }, { 102, 102, 51 }, 88 { 102, 255, 51 }, { 102, 204, 51 }, { 102, 153, 51 }, { 102, 102, 51 },
89 { 102, 51, 51 }, { 102, 0, 51 }, { 102, 255, 0 }, { 102, 204, 0 }, 89 { 102, 51, 51 }, { 102, 0, 51 }, { 102, 255, 0 }, { 102, 204, 0 },
90 { 102, 153, 0 }, { 102, 102, 0 }, { 102, 51, 0 }, { 102, 0, 0 }, 90 { 102, 153, 0 }, { 102, 102, 0 }, { 102, 51, 0 }, { 102, 0, 0 },
91 { 51, 255, 102 }, { 51, 204, 102 }, { 51, 153, 102 }, { 51, 102, 102 }, 91 { 51, 255, 102 }, { 51, 204, 102 }, { 51, 153, 102 }, { 51, 102, 102 },
92 { 51, 51, 102 }, { 51, 0, 102 }, { 51, 255, 51 }, { 51, 204, 51 }, 92 { 51, 51, 102 }, { 51, 0, 102 }, { 51, 255, 51 }, { 51, 204, 51 },
93 { 51, 153, 51 }, { 51, 102, 51 }, { 51, 51, 51 }, { 51, 0, 51 }, 93 { 51, 153, 51 }, { 51, 102, 51 }, { 51, 51, 51 }, { 51, 0, 51 },
94 { 51, 255, 0 }, { 51, 204, 0 }, { 51, 153, 0 }, { 51, 102, 0 }, 94 { 51, 255, 0 }, { 51, 204, 0 }, { 51, 153, 0 }, { 51, 102, 0 },
95 { 51, 51, 0 }, { 51, 0, 0 }, { 0, 255, 102 }, { 0, 204, 102 }, 95 { 51, 51, 0 }, { 51, 0, 0 }, { 0, 255, 102 }, { 0, 204, 102 },
96 { 0, 153, 102 }, { 0, 102, 102 }, { 0, 51, 102 }, { 0, 0, 102 }, 96 { 0, 153, 102 }, { 0, 102, 102 }, { 0, 51, 102 }, { 0, 0, 102 },
97 { 0, 255, 51 }, { 0, 204, 51 }, { 0, 153, 51 }, { 0, 102, 51 }, 97 { 0, 255, 51 }, { 0, 204, 51 }, { 0, 153, 51 }, { 0, 102, 51 },
98 { 0, 51, 51 }, { 0, 0, 51 }, { 0, 255, 0 }, { 0, 204, 0 }, 98 { 0, 51, 51 }, { 0, 0, 51 }, { 0, 255, 0 }, { 0, 204, 0 },
99 { 0, 153, 0 }, { 0, 102, 0 }, { 0, 51, 0 }, { 17, 17, 17 }, 99 { 0, 153, 0 }, { 0, 102, 0 }, { 0, 51, 0 }, { 17, 17, 17 },
100 { 34, 34, 34 }, { 68, 68, 68 }, { 85, 85, 85 }, { 119, 119, 119 }, 100 { 34, 34, 34 }, { 68, 68, 68 }, { 85, 85, 85 }, { 119, 119, 119 },
101 { 136, 136, 136 }, { 170, 170, 170 }, { 187, 187, 187 }, { 221, 221, 221 }, 101 { 136, 136, 136 }, { 170, 170, 170 }, { 187, 187, 187 }, { 221, 221, 221 },
102 { 238, 238, 238 }, { 192, 192, 192 }, { 128, 0, 0 }, { 128, 0, 128 }, 102 { 238, 238, 238 }, { 192, 192, 192 }, { 128, 0, 0 }, { 128, 0, 128 },
103 { 0, 128, 0 }, { 0, 128, 128 }, { 0, 0, 0 }, { 0, 0, 0 }, 103 { 0, 128, 0 }, { 0, 128, 128 }, { 0, 0, 0 }, { 0, 0, 0 },
104 { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, 104 { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 },
105 { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, 105 { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 },
106 { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, 106 { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 },
107 { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, 107 { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 },
108 { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, 108 { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 },
109 { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }}; 109 { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }};
110 110
111static ColorMapEntry Palm1BitColormap[] = {{ 255, 255, 255 }, { 0, 0, 0 }}; 111static ColorMapEntry Palm1BitColormap[] = {{ 255, 255, 255 }, { 0, 0, 0 }};
112 112
113static ColorMapEntry Palm2BitColormap[] = { 113static ColorMapEntry Palm2BitColormap[] = {
114 { 255, 255, 255 }, { 192, 192, 192 }, { 128, 128, 128 }, { 0, 0, 0 }}; 114 { 255, 255, 255 }, { 192, 192, 192 }, { 128, 128, 128 }, { 0, 0, 0 }};
115 115
116static ColorMapEntry Palm4BitColormap[] = { 116static ColorMapEntry Palm4BitColormap[] = {
117 { 255, 255, 255 }, { 238, 238, 238 }, { 221, 221, 221 }, { 204, 204, 204 }, 117 { 255, 255, 255 }, { 238, 238, 238 }, { 221, 221, 221 }, { 204, 204, 204 },
118 { 187, 187, 187 }, { 170, 170, 170 }, { 153, 153, 153 }, { 136, 136, 136 }, 118 { 187, 187, 187 }, { 170, 170, 170 }, { 153, 153, 153 }, { 136, 136, 136 },
119 { 119, 119, 119 }, { 102, 102, 102 }, { 85, 85, 85 }, { 68, 68, 68 }, 119 { 119, 119, 119 }, { 102, 102, 102 }, { 85, 85, 85 }, { 68, 68, 68 },
120 { 51, 51, 51 }, { 34, 34, 34 }, { 17, 17, 17 }, { 0, 0, 0 }}; 120 { 51, 51, 51 }, { 34, 34, 34 }, { 17, 17, 17 }, { 0, 0, 0 }};
121 121
122QImage* Palm2QImage 122QImage* Palm2QImage
123 (unsigned char *image_bytes_in, int byte_count_in) 123 (unsigned char *image_bytes_in, int byte_count_in)
124{ 124{
125 unsigned int width, height, bytes_per_row, flags, next_depth_offset; 125 unsigned int width, height, bytes_per_row, flags, next_depth_offset;
126 unsigned int bits_per_pixel, version, transparent_index, compression_type, i, j, inval, inbit, mask, incount; 126 unsigned int bits_per_pixel, version, transparent_index, compression_type, i, j, inval, inbit, mask, incount;
127 unsigned int palm_red_bits, palm_green_bits, palm_blue_bits; 127 unsigned int palm_red_bits, palm_green_bits, palm_blue_bits;
128 unsigned char *palm_ptr, *x_ptr, *imagedata, *inbyte, *rowbuf, *lastrow, 128 unsigned char *palm_ptr, *x_ptr, *inbyte, *rowbuf, *lastrow,
129 *imagedatastart, *palmimage; 129 *imagedatastart, *palmimage;
130 ColorMapEntry *colormap; 130 ColorMapEntry *colormap;
131 131
132 palmimage = image_bytes_in; 132 palmimage = image_bytes_in;
133 width = READ_BIGENDIAN_SHORT(palmimage + 0); 133 width = READ_BIGENDIAN_SHORT(palmimage + 0);
134 height = READ_BIGENDIAN_SHORT(palmimage + 2); 134 height = READ_BIGENDIAN_SHORT(palmimage + 2);
135 bytes_per_row = READ_BIGENDIAN_SHORT(palmimage + 4); 135 bytes_per_row = READ_BIGENDIAN_SHORT(palmimage + 4);
136 flags = READ_BIGENDIAN_SHORT(palmimage + 6); 136 flags = READ_BIGENDIAN_SHORT(palmimage + 6);
137 bits_per_pixel = palmimage[8]; 137 bits_per_pixel = palmimage[8];
138 version = palmimage[9]; 138 version = palmimage[9];
139 next_depth_offset = READ_BIGENDIAN_SHORT(palmimage + 10); 139 next_depth_offset = READ_BIGENDIAN_SHORT(palmimage + 10);
140 transparent_index = palmimage[12]; 140 transparent_index = palmimage[12];
141 compression_type = palmimage[13]; 141 compression_type = palmimage[13];
142 /* bytes 14 and 15 are reserved by Palm and always 0 */ 142 /* bytes 14 and 15 are reserved by Palm and always 0 */
143 143
144#if 0 144#if 0
145// qDebug ("Palm image is %dx%d, %d bpp, version %d, flags 0x%x, compression %d", width, height, bits_per_pixel, version, flags, compression_type); 145// qDebug ("Palm image is %dx%d, %d bpp, version %d, flags 0x%x, compression %d", width, height, bits_per_pixel, version, flags, compression_type);
146#endif 146#endif
147 147
148 if (compression_type == PALM_COMPRESSION_PACKBITS) { 148 if (compression_type == PALM_COMPRESSION_PACKBITS) {
149// qDebug ("Image uses packbits compression; not yet supported"); 149// qDebug ("Image uses packbits compression; not yet supported");
150 return NULL; 150 return NULL;
151 } else if ((compression_type != PALM_COMPRESSION_NONE) && 151 } else if ((compression_type != PALM_COMPRESSION_NONE) &&
152 (compression_type != PALM_COMPRESSION_RLE) && 152 (compression_type != PALM_COMPRESSION_RLE) &&
153 (compression_type != PALM_COMPRESSION_SCANLINE)) { 153 (compression_type != PALM_COMPRESSION_SCANLINE)) {
154// qDebug ("Image uses unknown compression, code 0x%x", compression_type); 154// qDebug ("Image uses unknown compression, code 0x%x", compression_type);
155 return NULL; 155 return NULL;
156 } 156 }
157 157
158 /* as of PalmOS 4.0, there are 6 different kinds of Palm pixmaps: 158 /* as of PalmOS 4.0, there are 6 different kinds of Palm pixmaps:
159 159
160 1, 2, or 4 bit grayscale 160 1, 2, or 4 bit grayscale
161 8-bit StaticColor using the Palm standard colormap 161 8-bit StaticColor using the Palm standard colormap
162 8-bit PseudoColor using a user-specified colormap 162 8-bit PseudoColor using a user-specified colormap
163 16-bit DirectColor using 5 bits for red, 6 for green, and 5 for blue 163 16-bit DirectColor using 5 bits for red, 6 for green, and 5 for blue
164 164
165 Each of these can be compressed with one of four compression schemes, 165 Each of these can be compressed with one of four compression schemes,
166 "RLE", "Scanline", "PackBits", or none. 166 "RLE", "Scanline", "PackBits", or none.
167 167
168 We begin by constructing the colormap. 168 We begin by constructing the colormap.
169 */ 169 */
170 170
171 if (flags & PALM_HAS_COLORMAP_FLAG) { 171 if (flags & PALM_HAS_COLORMAP_FLAG) {
172// qDebug("Palm images with custom colormaps are not currently supported.\n"); 172// qDebug("Palm images with custom colormaps are not currently supported.\n");
173 return NULL; 173 return NULL;
174 } else if (bits_per_pixel == 1) { 174 } else if (bits_per_pixel == 1) {
175 colormap = Palm1BitColormap; 175 colormap = Palm1BitColormap;
176 imagedatastart = palmimage + 16; 176 imagedatastart = palmimage + 16;
177 } else if (bits_per_pixel == 2) { 177 } else if (bits_per_pixel == 2) {
178 colormap = Palm2BitColormap; 178 colormap = Palm2BitColormap;
179 imagedatastart = palmimage + 16; 179 imagedatastart = palmimage + 16;
180 } else if (bits_per_pixel == 4) { 180 } else if (bits_per_pixel == 4) {
181 colormap = Palm4BitColormap; 181 colormap = Palm4BitColormap;
182 imagedatastart = palmimage + 16; 182 imagedatastart = palmimage + 16;
183 } else if (bits_per_pixel == 8) { 183 } else if (bits_per_pixel == 8) {
184 colormap = Palm8BitColormap; 184 colormap = Palm8BitColormap;
185 imagedatastart = palmimage + 16; 185 imagedatastart = palmimage + 16;
186 } else if (bits_per_pixel == 16 && (flags & PALM_DIRECT_COLOR_FLAG)) { 186 } else if (bits_per_pixel == 16 && (flags & PALM_DIRECT_COLOR_FLAG)) {
187 colormap = NULL; 187 colormap = NULL;
188 palm_red_bits = palmimage[16]; 188 palm_red_bits = palmimage[16];
189 palm_green_bits = palmimage[17]; 189 palm_green_bits = palmimage[17];
190 palm_blue_bits = palmimage[18]; 190 palm_blue_bits = palmimage[18];
191// qDebug("Bits:%d, %d, %d", palm_red_bits, palm_green_bits, palm_blue_bits); 191// qDebug("Bits:%d, %d, %d", palm_red_bits, palm_green_bits, palm_blue_bits);
192 if (palm_blue_bits > 8 || palm_green_bits > 8 || palm_red_bits > 8) { 192 if (palm_blue_bits > 8 || palm_green_bits > 8 || palm_red_bits > 8) {
193// qDebug("Can't handle this format DirectColor image -- too wide in some color (%d:%d:%d)\n", palm_red_bits, palm_green_bits, palm_blue_bits); 193// qDebug("Can't handle this format DirectColor image -- too wide in some color (%d:%d:%d)\n", palm_red_bits, palm_green_bits, palm_blue_bits);
194 return NULL; 194 return NULL;
195 } 195 }
196 if (bits_per_pixel > (8 * sizeof(unsigned long))) { 196 if (bits_per_pixel > (8 * sizeof(unsigned long))) {
197// qDebug ("Can't handle this format DirectColor image -- too many bits per pixel (%d)\n", bits_per_pixel); 197// qDebug ("Can't handle this format DirectColor image -- too many bits per pixel (%d)\n", bits_per_pixel);
198 return NULL; 198 return NULL;
199 } 199 }
200 imagedatastart = palmimage + 24; 200 imagedatastart = palmimage + 24;
201 } else { 201 } else {
202// qDebug("Unknown bits-per-pixel of %d encountered.\n", bits_per_pixel); 202// qDebug("Unknown bits-per-pixel of %d encountered.\n", bits_per_pixel);
203 return NULL; 203 return NULL;
204 } 204 }
205 205
206#ifndef USEQPE 206#ifndef USEQPE
207 QImage* qimage = new QImage(width, height, 32); 207 QImage* qimage = new QImage(width, height, 32);
208#else 208#else
209 QImage* qimage = new QImage(width, height, 16); 209 QImage* qimage = new QImage(width, height, 16);
210#endif 210#endif
211 211
212 /* row by row, uncompress the Palm image and copy it to the JPEG buffer */ 212 /* row by row, uncompress the Palm image and copy it to the JPEG buffer */
213 rowbuf = new unsigned char[bytes_per_row * width]; 213 rowbuf = new unsigned char[bytes_per_row * width];
214 lastrow = new unsigned char[bytes_per_row * width]; 214 lastrow = new unsigned char[bytes_per_row * width];
215 215
216 for (i=0, palm_ptr = imagedatastart , x_ptr = imagedata; i < height; ++i) { 216 for (i=0, palm_ptr = imagedatastart , x_ptr = 0; i < height; ++i) {
217// qDebug("inval:%x palm_ptr:%x x_ptr:%x bpr:%x", inval, palm_ptr, x_ptr, bytes_per_row); 217// qDebug("inval:%x palm_ptr:%x x_ptr:%x bpr:%x", inval, palm_ptr, x_ptr, bytes_per_row);
218 218
219 /* first, uncompress the Palm image */ 219 /* first, uncompress the Palm image */
220 if ((flags & PALM_IS_COMPRESSED_FLAG) && (compression_type == PALM_COMPRESSION_RLE)) { 220 if ((flags & PALM_IS_COMPRESSED_FLAG) && (compression_type == PALM_COMPRESSION_RLE)) {
221 for (j = 0; j < bytes_per_row; ) { 221 for (j = 0; j < bytes_per_row; ) {
222 incount = *palm_ptr++; 222 incount = *palm_ptr++;
223 inval = *palm_ptr++; 223 inval = *palm_ptr++;
224 memset(rowbuf + j, inval, incount); 224 memset(rowbuf + j, inval, incount);
225 j += incount; 225 j += incount;
226 } 226 }
227 } else if ((flags & PALM_IS_COMPRESSED_FLAG) && (compression_type == PALM_COMPRESSION_SCANLINE)) { 227 } else if ((flags & PALM_IS_COMPRESSED_FLAG) && (compression_type == PALM_COMPRESSION_SCANLINE)) {
228 for (j = 0; j < bytes_per_row; j += 8) { 228 for (j = 0; j < bytes_per_row; j += 8) {
229 incount = *palm_ptr++; 229 incount = *palm_ptr++;
230 inval = ((bytes_per_row - j) < 8) ? (bytes_per_row - j) : 8; 230 inval = ((bytes_per_row - j) < 8) ? (bytes_per_row - j) : 8;
231 for (inbit = 0; inbit < inval; inbit += 1) { 231 for (inbit = 0; inbit < inval; inbit += 1) {
232 if (incount & (1 << (7 - inbit))) 232 if (incount & (1 << (7 - inbit)))
233 rowbuf[j + inbit] = *palm_ptr++; 233 rowbuf[j + inbit] = *palm_ptr++;
234 else 234 else
235 rowbuf[j + inbit] = lastrow[j + inbit]; 235 rowbuf[j + inbit] = lastrow[j + inbit];
236 } 236 }
237 } 237 }
238 memcpy (lastrow, rowbuf, bytes_per_row); 238 memcpy (lastrow, rowbuf, bytes_per_row);
239 } else if (((flags & PALM_IS_COMPRESSED_FLAG) && 239 } else if (((flags & PALM_IS_COMPRESSED_FLAG) &&
240 (compression_type == PALM_COMPRESSION_NONE)) || 240 (compression_type == PALM_COMPRESSION_NONE)) ||
241 ((flags & PALM_IS_COMPRESSED_FLAG) == 0)) 241 ((flags & PALM_IS_COMPRESSED_FLAG) == 0))
242 { 242 {
243 memcpy (rowbuf, palm_ptr, bytes_per_row); 243 memcpy (rowbuf, palm_ptr, bytes_per_row);
244 palm_ptr += bytes_per_row; 244 palm_ptr += bytes_per_row;
245 } 245 }
246 else { 246 else {
247 qDebug("Case 4"); 247 qDebug("Case 4");
248 qDebug("Is compressed:%s", ((flags & PALM_IS_COMPRESSED_FLAG) == 0) ? "false" : "true"); 248 qDebug("Is compressed:%s", ((flags & PALM_IS_COMPRESSED_FLAG) == 0) ? "false" : "true");
249 qDebug("Has colourmap:%s", ((flags & PALM_HAS_COLORMAP_FLAG) == 0) ? "false" : "true"); 249 qDebug("Has colourmap:%s", ((flags & PALM_HAS_COLORMAP_FLAG) == 0) ? "false" : "true");
250 qDebug("Has transparency:%s", ((flags & PALM_HAS_TRANSPARENCY_FLAG) == 0) ? "false" : "true"); 250 qDebug("Has transparency:%s", ((flags & PALM_HAS_TRANSPARENCY_FLAG) == 0) ? "false" : "true");
251 qDebug("Direct colour:%s", ((flags & PALM_DIRECT_COLOR_FLAG) == 0) ? "false" : "true"); 251 qDebug("Direct colour:%s", ((flags & PALM_DIRECT_COLOR_FLAG) == 0) ? "false" : "true");
252 qDebug("four byte field:%s", ((flags & PALM_4_BYTE_FIELD_FLAG) == 0) ? "false" : "true"); 252 qDebug("four byte field:%s", ((flags & PALM_4_BYTE_FIELD_FLAG) == 0) ? "false" : "true");
253 memcpy (rowbuf, palm_ptr, bytes_per_row); 253 memcpy (rowbuf, palm_ptr, bytes_per_row);
254 palm_ptr += bytes_per_row; 254 palm_ptr += bytes_per_row;
255 } 255 }
256 /* next, write it to the GDK bitmap */ 256 /* next, write it to the GDK bitmap */
257 if (colormap) { 257 if (colormap) {
258 mask = (1 << bits_per_pixel) - 1; 258 mask = (1 << bits_per_pixel) - 1;
259 for (inbit = 8 - bits_per_pixel, inbyte = rowbuf, j = 0; j < width; ++j) { 259 for (inbit = 8 - bits_per_pixel, inbyte = rowbuf, j = 0; j < width; ++j) {
260 inval = ((*inbyte) & (mask << inbit)) >> inbit; 260 inval = ((*inbyte) & (mask << inbit)) >> inbit;
261 /* correct for oddity of the 8-bit color Palm pixmap... */ 261 /* correct for oddity of the 8-bit color Palm pixmap... */
262 if ((bits_per_pixel == 8) && (inval == 0xFF)) inval = 231; 262 if ((bits_per_pixel == 8) && (inval == 0xFF)) inval = 231;
263 /* now lookup the correct color and set the pixel in the GTK bitmap */ 263 /* now lookup the correct color and set the pixel in the GTK bitmap */
264 QRgb colour = qRgb(colormap[inval].red, colormap[inval].green, colormap[inval].blue); 264 QRgb colour = qRgb(colormap[inval].red, colormap[inval].green, colormap[inval].blue);
265 qimage->setPixel(j, i, colour); 265 qimage->setPixel(j, i, colour);
266 if (!inbit) { 266 if (!inbit) {
267 ++inbyte; 267 ++inbyte;
268 inbit = 8 - bits_per_pixel; 268 inbit = 8 - bits_per_pixel;
269 } else { 269 } else {
270 inbit -= bits_per_pixel; 270 inbit -= bits_per_pixel;
271 } 271 }
272 } 272 }
273 } else if (!colormap && 273 } else if (!colormap &&
274 bits_per_pixel == 16) { 274 bits_per_pixel == 16) {
275 for (inbyte = rowbuf, j = 0; j < width; ++j) { 275 for (inbyte = rowbuf, j = 0; j < width; ++j) {
276 inval = ((unsigned short)inbyte[0] << (unsigned short)8) | inbyte[1]; 276 inval = ((unsigned short)inbyte[0] << (unsigned short)8) | inbyte[1];
277 277
278/* 278/*
279 qDebug ("pixel is %d,%d (%d:%d:%d)", 279 qDebug ("pixel is %d,%d (%d:%d:%d)",
280 j, i, 280 j, i,
281 ((inval >> (bits_per_pixel - palm_red_bits)) & ((1 << palm_red_bits) - 1)) << (8-palm_red_bits), 281 ((inval >> (bits_per_pixel - palm_red_bits)) & ((1 << palm_red_bits) - 1)) << (8-palm_red_bits),
282 ((inval >> palm_blue_bits) & ((1 << palm_green_bits) - 1)) << (8-palm_green_bits), 282 ((inval >> palm_blue_bits) & ((1 << palm_green_bits) - 1)) << (8-palm_green_bits),
283 ((inval >> 0) & ((1 << palm_blue_bits) - 1)) << (8-palm_blue_bits)); 283 ((inval >> 0) & ((1 << palm_blue_bits) - 1)) << (8-palm_blue_bits));
284*/ 284*/
285 QRgb colour = qRgb( 285 QRgb colour = qRgb(
286 ((inval >> (bits_per_pixel - palm_red_bits)) & ((1 << palm_red_bits) - 1)) << (8-palm_red_bits), 286 ((inval >> (bits_per_pixel - palm_red_bits)) & ((1 << palm_red_bits) - 1)) << (8-palm_red_bits),
287 ((inval >> palm_blue_bits) & ((1 << palm_green_bits) - 1)) << (8-palm_green_bits), 287 ((inval >> palm_blue_bits) & ((1 << palm_green_bits) - 1)) << (8-palm_green_bits),
288 ((inval >> 0) & ((1 << palm_blue_bits) - 1)) << (8-palm_blue_bits)); 288 ((inval >> 0) & ((1 << palm_blue_bits) - 1)) << (8-palm_blue_bits));
289 qimage->setPixel(j, i, colour); 289 qimage->setPixel(j, i, colour);
290 inbyte += 2; 290 inbyte += 2;
291 } 291 }
292 } 292 }
293 } 293 }
294 294
295 delete [] rowbuf; 295 delete [] rowbuf;
296 delete [] lastrow; 296 delete [] lastrow;
297 297
298 return qimage; 298 return qimage;
299} 299}
diff --git a/noncore/apps/opie-reader/QTReader.cpp b/noncore/apps/opie-reader/QTReader.cpp
index 0c56dd4..75da8ac 100644
--- a/noncore/apps/opie-reader/QTReader.cpp
+++ b/noncore/apps/opie-reader/QTReader.cpp
@@ -451,193 +451,193 @@ linkType QTReader::getcurrentpos(int x, int y, int w, int h, int& lineno, size_t
451 else 451 else
452 { 452 {
453 if (y >= m_scrolldy) 453 if (y >= m_scrolldy)
454 { 454 {
455 lineno = 0; 455 lineno = 0;
456 ht = textarray[0]->lineSpacing()-m_scrolldy1+m_scrolldy + m_topmargin; 456 ht = textarray[0]->lineSpacing()-m_scrolldy1+m_scrolldy + m_topmargin;
457 } 457 }
458 else 458 else
459 { 459 {
460 lineno = 0; 460 lineno = 0;
461 ht = textarray[0]->lineSpacing()-m_scrolldy1+m_scrolldy+m_topmargin; 461 ht = textarray[0]->lineSpacing()-m_scrolldy1+m_scrolldy+m_topmargin;
462 while ((ht < h) && (lineno < numlines-1)) 462 while ((ht < h) && (lineno < numlines-1))
463 { 463 {
464 ht += textarray[++lineno]->lineSpacing(); 464 ht += textarray[++lineno]->lineSpacing();
465 } 465 }
466 ht = textarray[lineno]->lineSpacing(); 466 ht = textarray[lineno]->lineSpacing();
467 } 467 }
468 } 468 }
469 while ((ht < y) && (lineno < numlines-1)) 469 while ((ht < y) && (lineno < numlines-1))
470 { 470 {
471 ht += textarray[++lineno]->lineSpacing(); 471 ht += textarray[++lineno]->lineSpacing();
472 } 472 }
473 if (ht < y && textarray[numlines]->showPartial()) lineno = numlines; 473 if (ht < y && textarray[numlines]->showPartial()) lineno = numlines;
474 start = locnarray[lineno]; 474 start = locnarray[lineno];
475 int availht = ((m_rotated) ? width() : height()) - m_topmargin - m_bottommargin; 475 int availht = ((m_rotated) ? width() : height()) - m_topmargin - m_bottommargin;
476 if (m_bMonoSpaced) 476 if (m_bMonoSpaced)
477 { 477 {
478 offset = (x - textarray[lineno]->offset(w, m_left_border, m_right_border, availht))/m_charWidth; 478 offset = (x - textarray[lineno]->offset(w, m_left_border, m_right_border, availht))/m_charWidth;
479 } 479 }
480 else 480 else
481 { 481 {
482 int i; 482 int i;
483 CDrawBuffer* t = textarray[lineno]; 483 CDrawBuffer* t = textarray[lineno];
484 x = x - t->offset(width(), m_left_border, m_right_border, availht); 484 x = x - t->offset(width(), m_left_border, m_right_border, availht);
485 for (i = t->length(); i > 0 && t->width(availht, i, true, w, m_left_border, m_right_border) > x; i--); 485 for (i = t->length(); i > 0 && t->width(availht, i, true, w, m_left_border, m_right_border) > x; i--);
486 offset = i; 486 offset = i;
487 } 487 }
488 return textarray[lineno]->getLinkType(offset, tgt, tgtoffset, pictgt, img, tabtgt); 488 return textarray[lineno]->getLinkType(offset, tgt, tgtoffset, pictgt, img, tabtgt);
489} 489}
490 490
491void QTReader::suspend() 491void QTReader::suspend()
492{ 492{
493 buffdoc.suspend(); 493 buffdoc.suspend();
494 /*#ifdef OPIE 494 /*#ifdef OPIE
495 if (memcmp("/mnt/", m_lastfile.latin1(), 5) == 0) buffdoc.suspend(); 495 if (memcmp("/mnt/", m_lastfile.latin1(), 5) == 0) buffdoc.suspend();
496#else 496#else
497 if (memcmp("/usr/mnt.rom/", m_lastfile.latin1(), 13) == 0) buffdoc.suspend(); 497 if (memcmp("/usr/mnt.rom/", m_lastfile.latin1(), 13) == 0) buffdoc.suspend();
498#endif 498#endif
499 */ 499 */
500} 500}
501 501
502void QTReader::setDoubleBuffer(bool _b) 502void QTReader::setDoubleBuffer(bool _b)
503{ 503{
504 m_doubleBuffered = _b; 504 m_doubleBuffered = _b;
505 if (_b || m_rotated) 505 if (_b || m_rotated)
506 { 506 {
507 if (dbuff == NULL) 507 if (dbuff == NULL)
508 { 508 {
509 dbuff = new QPixmap(); 509 dbuff = new QPixmap();
510 dbp = new QPainter(); 510 dbp = new QPainter();
511 } 511 }
512 if (m_rotated) 512 if (m_rotated)
513 { 513 {
514 dbuff->resize(height(), width()); 514 dbuff->resize(height(), width());
515 } 515 }
516 else 516 else
517 { 517 {
518 dbuff->resize(width(), height()); 518 dbuff->resize(width(), height());
519 } 519 }
520 m_outofdate = true; 520 m_outofdate = true;
521 } 521 }
522 else 522 else
523 { 523 {
524 if (dbuff != NULL) 524 if (dbuff != NULL)
525 { 525 {
526 delete dbuff; 526 delete dbuff;
527 delete dbp; 527 delete dbp;
528 } 528 }
529 dbuff = NULL; 529 dbuff = NULL;
530 dbp = NULL; 530 dbp = NULL;
531 } 531 }
532} 532}
533 533
534void QTReader::setTwoTouch(bool _b) 534void QTReader::setTwoTouch(bool _b)
535{ 535{
536 setBackgroundColor( m_bg ); 536 setBackgroundColor( m_bg );
537 m_twotouch = m_touchone = _b; 537 m_twotouch = m_touchone = _b;
538} 538}
539 539
540void QTReader::setContinuous(bool _b) 540void QTReader::setContinuous(bool _b)
541{ 541{
542 buffdoc.setContinuous(m_continuousDocument = _b); 542 buffdoc.setContinuous(m_continuousDocument = _b);
543} 543}
544 544
545void QTReader::processmousewordevent(size_t startpos, size_t startoffset, QMouseEvent* _e, int lineno) 545void QTReader::processmousewordevent(size_t startpos, size_t startoffset, QMouseEvent* _e, int lineno)
546{ 546{
547 unsigned long wrdstart, wrdend; 547 unsigned long wrdstart = 0, wrdend = 0;
548 QString wrd; 548 QString wrd;
549 int availht = ((m_rotated) ? width() : height()) - m_topmargin - m_bottommargin; 549 int availht = ((m_rotated) ? width() : height()) - m_topmargin - m_bottommargin;
550 if (m_twotouch) 550 if (m_twotouch)
551 { 551 {
552 if (m_touchone) 552 if (m_touchone)
553 { 553 {
554 m_touchone = false; 554 m_touchone = false;
555 m_startpos = startpos; 555 m_startpos = startpos;
556 m_startoffset = startoffset; 556 m_startoffset = startoffset;
557 setBackgroundColor( lightGray ); 557 setBackgroundColor( lightGray );
558 } 558 }
559 else 559 else
560 { 560 {
561 m_touchone = true; 561 m_touchone = true;
562 setBackgroundColor( m_bg ); 562 setBackgroundColor( m_bg );
563 size_t endpos, endoffset; 563 size_t endpos, endoffset;
564 endpos = startpos; 564 endpos = startpos;
565 endoffset = startoffset; 565 endoffset = startoffset;
566 size_t currentpos = locate(); 566 size_t currentpos = locate();
567 if (endpos >= m_startpos) 567 if (endpos >= m_startpos)
568 { 568 {
569 jumpto(m_startpos); 569 jumpto(m_startpos);
570 for (int i = 0; i < m_startoffset; i++) 570 for (int i = 0; i < m_startoffset; i++)
571 { 571 {
572 getch(); 572 getch();
573 } 573 }
574 wrdstart = buffdoc.explocate(); 574 wrdstart = buffdoc.explocate();
575 if (m_startpos == endpos) 575 if (m_startpos == endpos)
576 { 576 {
577 for (int i = m_startoffset; i <= endoffset; i++) 577 for (int i = m_startoffset; i <= endoffset; i++)
578 { 578 {
579 wrd += QChar(getch()); 579 wrd += QChar(getch());
580 } 580 }
581 } 581 }
582 else 582 else
583 { 583 {
584 while (buffdoc.explocate() <= endpos) 584 while (buffdoc.explocate() <= endpos)
585 { 585 {
586 wrd += QChar(getch()); 586 wrd += QChar(getch());
587 } 587 }
588 for (int i = 0; i < endoffset; i++) 588 for (int i = 0; i < endoffset; i++)
589 { 589 {
590 wrd += QChar(getch()); 590 wrd += QChar(getch());
591 } 591 }
592 } 592 }
593 wrdend = buffdoc.explocate(); 593 wrdend = buffdoc.explocate();
594 jumpto(currentpos); 594 jumpto(currentpos);
595 } 595 }
596 } 596 }
597 } 597 }
598 else if (m_bMonoSpaced) 598 else if (m_bMonoSpaced)
599 { 599 {
600 int chno = (m_rotated) ? 600 int chno = (m_rotated) ?
601 (_e->y()-textarray[lineno]->offset(height(), m_left_border, m_right_border, availht))/m_charWidth 601 (_e->y()-textarray[lineno]->offset(height(), m_left_border, m_right_border, availht))/m_charWidth
602 : 602 :
603 (_e->x()-textarray[lineno]->offset(width(), m_left_border, m_right_border, availht))/m_charWidth; 603 (_e->x()-textarray[lineno]->offset(width(), m_left_border, m_right_border, availht))/m_charWidth;
604 if (chno < ustrlen(textarray[lineno]->data())) 604 if (chno < ustrlen(textarray[lineno]->data()))
605 { 605 {
606 wrd[0] = textarray[lineno]->data()[chno]; 606 wrd[0] = textarray[lineno]->data()[chno];
607 } 607 }
608 } 608 }
609 else 609 else
610 { 610 {
611 CDrawBuffer* t = textarray[lineno]; 611 CDrawBuffer* t = textarray[lineno];
612 int first = 0; 612 int first = 0;
613 int tgt = (m_rotated) ? 613 int tgt = (m_rotated) ?
614 _e->y() - t->offset(height(), m_left_border, m_right_border, availht) : 614 _e->y() - t->offset(height(), m_left_border, m_right_border, availht) :
615 _e->x() - t->offset(width(), m_left_border, m_right_border, availht); 615 _e->x() - t->offset(width(), m_left_border, m_right_border, availht);
616 while (1) 616 while (1)
617 { 617 {
618 int i = first+1; 618 int i = first+1;
619 int availht = ((m_rotated) ? width() : height()) - m_topmargin - m_bottommargin; 619 int availht = ((m_rotated) ? width() : height()) - m_topmargin - m_bottommargin;
620 while (QChar((*t)[i]).isLetter() && (*t)[i] != 0) i++; 620 while (QChar((*t)[i]).isLetter() && (*t)[i] != 0) i++;
621 if (t->width(availht, i, true, (m_rotated) ? height() : width(), m_left_border, m_right_border) > tgt) 621 if (t->width(availht, i, true, (m_rotated) ? height() : width(), m_left_border, m_right_border) > tgt)
622 { 622 {
623 wrd = toQString(t->data()+first, i - first); 623 wrd = toQString(t->data()+first, i - first);
624 // qDebug("Got %s", (const char *)wrd); 624 // qDebug("Got %s", (const char *)wrd);
625 break; 625 break;
626 } 626 }
627 while (!QChar((*t)[i]).isLetter() && (*t)[i] != 0) i++; 627 while (!QChar((*t)[i]).isLetter() && (*t)[i] != 0) i++;
628 if ((*t)[i] == 0) break; 628 if ((*t)[i] == 0) break;
629 first = i; 629 first = i;
630 } 630 }
631 } 631 }
632 if (!wrd.isEmpty()) 632 if (!wrd.isEmpty())
633 { 633 {
634 qDebug("Selected:%s", (const char*)wrd); 634 qDebug("Selected:%s", (const char*)wrd);
635 if (m_twotouch) 635 if (m_twotouch)
636 { 636 {
637 emit OnWordSelected(wrd, wrdstart, wrdend, wrd); 637 emit OnWordSelected(wrd, wrdstart, wrdend, wrd);
638 } 638 }
639 else 639 else
640 { 640 {
641 QString line = toQString(textarray[lineno]->data()); 641 QString line = toQString(textarray[lineno]->data());
642 emit OnWordSelected(wrd, locnarray[lineno], locnarray[lineno]+line.length(), line); 642 emit OnWordSelected(wrd, locnarray[lineno], locnarray[lineno]+line.length(), line);
643 } 643 }
diff --git a/noncore/apps/opie-reader/plucker_base.cpp b/noncore/apps/opie-reader/plucker_base.cpp
index 849edfc..302ac73 100644
--- a/noncore/apps/opie-reader/plucker_base.cpp
+++ b/noncore/apps/opie-reader/plucker_base.cpp
@@ -612,193 +612,193 @@ void CPlucker_base::showimg(UInt16 tgt)
612 QCopEnvelope e("QPE/Application/showimg", "setDocument(QString)"); 612 QCopEnvelope e("QPE/Application/showimg", "setDocument(QString)");
613 e << QString(tmpfile); 613 e << QString(tmpfile);
614 } 614 }
615 Global::statusMessage("Opening image"); 615 Global::statusMessage("Opening image");
616 sleep(5); 616 sleep(5);
617 delete image; 617 delete image;
618 unlink(tmpfile); 618 unlink(tmpfile);
619 */ 619 */
620} 620}
621 621
622#endif 622#endif
623 623
624unsigned short CPlucker_base::finduid(unsigned short urlid) 624unsigned short CPlucker_base::finduid(unsigned short urlid)
625{ 625{
626 // //qDebug("Finding %u", urlid); 626 // //qDebug("Finding %u", urlid);
627 unsigned short jmin = 1, jmax = ntohs(head.recordList.numRecords); 627 unsigned short jmin = 1, jmax = ntohs(head.recordList.numRecords);
628 unsigned short jmid = (jmin+jmax) >> 1; 628 unsigned short jmid = (jmin+jmax) >> 1;
629 while (jmax - jmin > 1) 629 while (jmax - jmin > 1)
630 { 630 {
631 gotorecordnumber(jmid); 631 gotorecordnumber(jmid);
632 UInt16 thishdr_uid, thishdr_nParagraphs; 632 UInt16 thishdr_uid, thishdr_nParagraphs;
633 UInt32 thishdr_size; 633 UInt32 thishdr_size;
634 UInt8 thishdr_type, thishdr_reserved; 634 UInt8 thishdr_type, thishdr_reserved;
635 GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); 635 GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved);
636 unsigned short luid = thishdr_uid; 636 unsigned short luid = thishdr_uid;
637 ////qDebug("%u %u %u : %u", jmin, jmid, jmax, urlid); 637 ////qDebug("%u %u %u : %u", jmin, jmid, jmax, urlid);
638 if (luid == urlid) 638 if (luid == urlid)
639 { 639 {
640 return jmid; 640 return jmid;
641 } 641 }
642 if (luid < urlid) 642 if (luid < urlid)
643 { 643 {
644 jmin = jmid; 644 jmin = jmid;
645 } 645 }
646 else 646 else
647 { 647 {
648 jmax = jmid; 648 jmax = jmid;
649 } 649 }
650 jmid = (jmin+jmax) >> 1; 650 jmid = (jmin+jmax) >> 1;
651 } 651 }
652 gotorecordnumber(jmin); 652 gotorecordnumber(jmin);
653 UInt16 thishdr_uid, thishdr_nParagraphs; 653 UInt16 thishdr_uid, thishdr_nParagraphs;
654 UInt32 thishdr_size; 654 UInt32 thishdr_size;
655 UInt8 thishdr_type, thishdr_reserved; 655 UInt8 thishdr_type, thishdr_reserved;
656 GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); 656 GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved);
657 unsigned short luid = thishdr_uid; 657 unsigned short luid = thishdr_uid;
658 //qDebug("jmin at end:%u,%u", jmin, luid); 658 //qDebug("jmin at end:%u,%u", jmin, luid);
659 if (luid == urlid) 659 if (luid == urlid)
660 { 660 {
661 return jmin; 661 return jmin;
662 } 662 }
663 gotorecordnumber(jmax); 663 gotorecordnumber(jmax);
664 GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); 664 GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved);
665 luid = thishdr_uid; 665 luid = thishdr_uid;
666 //qDebug("jmax at end:%u,%u", jmax, luid); 666 //qDebug("jmax at end:%u,%u", jmax, luid);
667 if (luid == urlid) 667 if (luid == urlid)
668 { 668 {
669 return jmax; 669 return jmax;
670 } 670 }
671 //qDebug("Couldn't find %u", urlid); 671 //qDebug("Couldn't find %u", urlid);
672 return 0; // Not found! 672 return 0; // Not found!
673} 673}
674 674
675#include <qnamespace.h> 675#include <qnamespace.h>
676 676
677void CPlucker_base::setSaveData(unsigned char*& data, unsigned short& len, unsigned char* src, unsigned short srclen) 677void CPlucker_base::setSaveData(unsigned char*& data, unsigned short& len, unsigned char* src, unsigned short srclen)
678{ 678{
679 unsigned short sz = 0; 679 unsigned short sz = 0;
680 for (CList<unsigned long>::iterator it = visited.begin(); it != visited.end(); it++) 680 for (CList<unsigned long>::iterator it = visited.begin(); it != visited.end(); it++)
681 { 681 {
682 sz++; 682 sz++;
683 } 683 }
684 size_t newlen = srclen+sizeof(sz)+sz*sizeof(unsigned long); 684 size_t newlen = srclen+sizeof(sz)+sz*sizeof(unsigned long);
685 unsigned char* newdata = new unsigned char[newlen]; 685 unsigned char* newdata = new unsigned char[newlen];
686 unsigned char* pdata = newdata; 686 unsigned char* pdata = newdata;
687 memcpy(newdata, src, srclen); 687 memcpy(newdata, src, srclen);
688 newdata += srclen; 688 newdata += srclen;
689 memcpy(newdata, &sz, sizeof(sz)); 689 memcpy(newdata, &sz, sizeof(sz));
690 newdata += sizeof(sz); 690 newdata += sizeof(sz);
691#ifdef _WINDOWS 691#ifdef _WINDOWS
692 for (it = visited.begin(); it != visited.end(); it++) 692 for (it = visited.begin(); it != visited.end(); it++)
693#else 693#else
694 for (CList<unsigned long>::iterator it = visited.begin(); it != visited.end(); it++) 694 for (CList<unsigned long>::iterator it = visited.begin(); it != visited.end(); it++)
695#endif 695#endif
696 { 696 {
697 unsigned long t = *it; 697 unsigned long t = *it;
698 //qDebug("[%u]", t); 698 //qDebug("[%u]", t);
699 memcpy(newdata, &t, sizeof(t)); 699 memcpy(newdata, &t, sizeof(t));
700 newdata += sizeof(t); 700 newdata += sizeof(t);
701 } 701 }
702 m_nav.setSaveData(data, len, pdata, newlen); 702 m_nav.setSaveData(data, len, pdata, newlen);
703 delete [] pdata; 703 delete [] pdata;
704} 704}
705 705
706void CPlucker_base::putSaveData(unsigned char*& src, unsigned short& srclen) 706void CPlucker_base::putSaveData(unsigned char*& src, unsigned short& srclen)
707{ 707{
708 unsigned short sz; 708 unsigned short sz = 0;
709 if (srclen >= sizeof(sz)) 709 if (srclen >= sizeof(sz))
710 { 710 {
711 memcpy(&sz, src, sizeof(sz)); 711 memcpy(&sz, src, sizeof(sz));
712 src += sizeof(sz); 712 src += sizeof(sz);
713 srclen -= sizeof(sz); 713 srclen -= sizeof(sz);
714 } 714 }
715 for (int i = 0; i < sz; i++) 715 for (int i = 0; i < sz; i++)
716 { 716 {
717 unsigned long t; 717 unsigned long t;
718 if (srclen >= sizeof(t)) 718 if (srclen >= sizeof(t))
719 { 719 {
720 memcpy(&t, src, sizeof(t)); 720 memcpy(&t, src, sizeof(t));
721 // qDebug("[%u]", t); 721 // qDebug("[%u]", t);
722 visited.push_front(t); 722 visited.push_front(t);
723 src += sizeof(t); 723 src += sizeof(t);
724 srclen -= sizeof(t); 724 srclen -= sizeof(t);
725 } 725 }
726 else 726 else
727 { 727 {
728 QMessageBox::warning(NULL, PROGNAME, "File data mismatch\nMight fix itself"); 728 QMessageBox::warning(NULL, PROGNAME, "File data mismatch\nMight fix itself");
729 break; 729 break;
730 } 730 }
731 } 731 }
732 m_nav.putSaveData(src, srclen); 732 m_nav.putSaveData(src, srclen);
733} 733}
734 734
735int CPlucker_base::OpenFile(const char *src) 735int CPlucker_base::OpenFile(const char *src)
736{ 736{
737 qDebug("plucker openfile:%s", src); 737 qDebug("plucker openfile:%s", src);
738 m_lastBreak = 0; 738 m_lastBreak = 0;
739 if (!Cpdb::openpdbfile(src)) 739 if (!Cpdb::openpdbfile(src))
740 { 740 {
741 return -1; 741 return -1;
742 } 742 }
743 743
744 if (!CorrectDecoder()) return -1; 744 if (!CorrectDecoder()) return -1;
745 745
746 gotorecordnumber(0); 746 gotorecordnumber(0);
747 fread(&hdr0, 1, 6, fin); 747 fread(&hdr0, 1, 6, fin);
748 qDebug("Compression type:%u", ntohs(hdr0.version)); 748 qDebug("Compression type:%u", ntohs(hdr0.version));
749 749
750 750
751 switch (ntohs(hdr0.version)) 751 switch (ntohs(hdr0.version))
752 { 752 {
753 case 2: 753 case 2:
754 m_decompress = UnZip; 754 m_decompress = UnZip;
755 break; 755 break;
756 case 1: 756 case 1:
757 m_decompress = UnDoc; 757 m_decompress = UnDoc;
758 break; 758 break;
759#ifdef USENEF 759#ifdef USENEF
760 case 3: 760 case 3:
761 m_decompress = getdecompressor("PluckerDecompress3"); 761 m_decompress = getdecompressor("PluckerDecompress3");
762 break; 762 break;
763 case 4: 763 case 4:
764 m_decompress = getdecompressor("PluckerDecompress4"); 764 m_decompress = getdecompressor("PluckerDecompress4");
765 break; 765 break;
766#endif 766#endif
767 default: 767 default:
768 m_decompress = NULL; 768 m_decompress = NULL;
769 } 769 }
770 if (m_decompress == NULL) return -1; 770 if (m_decompress == NULL) return -1;
771 771
772 setbuffersize(); 772 setbuffersize();
773 compressedtextbuffer = new UInt8[compressedbuffersize]; 773 compressedtextbuffer = new UInt8[compressedbuffersize];
774 expandedtextbuffer = new UInt8[buffersize]; 774 expandedtextbuffer = new UInt8[buffersize];
775 775
776 unsigned int nrecs = ntohs(hdr0.nRecords); 776 unsigned int nrecs = ntohs(hdr0.nRecords);
777 qDebug("Version %u, no. reserved recs %u", ntohs(hdr0.version), nrecs); 777 qDebug("Version %u, no. reserved recs %u", ntohs(hdr0.version), nrecs);
778 textlength = ntohl(head.sortInfoID); 778 textlength = ntohl(head.sortInfoID);
779 qDebug("Textlength at startup:%u", textlength); 779 qDebug("Textlength at startup:%u", textlength);
780 UInt16 homerecid = 1; 780 UInt16 homerecid = 1;
781 for (unsigned int i = 0; i < nrecs; i++) 781 for (unsigned int i = 0; i < nrecs; i++)
782 { 782 {
783 UInt16 id, name; 783 UInt16 id, name;
784 fread(&name, 1, sizeof(name), fin); 784 fread(&name, 1, sizeof(name), fin);
785 fread(&id, 1, sizeof(id), fin); 785 fread(&id, 1, sizeof(id), fin);
786 //qDebug("N:%d, I:%d", ntohs(name), ntohs(id)); 786 //qDebug("N:%d, I:%d", ntohs(name), ntohs(id));
787 if (ntohs(name) == 0) homerecid = ntohs(id); 787 if (ntohs(name) == 0) homerecid = ntohs(id);
788 } 788 }
789 789
790 textlength = 0; 790 textlength = 0;
791 for (int recptr = 1; recptr < ntohs(head.recordList.numRecords); recptr++) 791 for (int recptr = 1; recptr < ntohs(head.recordList.numRecords); recptr++)
792 { 792 {
793 gotorecordnumber(recptr); 793 gotorecordnumber(recptr);
794 UInt16 thishdr_uid, thishdr_nParagraphs; 794 UInt16 thishdr_uid, thishdr_nParagraphs;
795 UInt32 thishdr_size; 795 UInt32 thishdr_size;
796 UInt8 thishdr_type, thishdr_reserved; 796 UInt8 thishdr_type, thishdr_reserved;
797 GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved); 797 GetHeader(thishdr_uid, thishdr_nParagraphs, thishdr_size, thishdr_type, thishdr_reserved);
798 if (thishdr_uid == homerecid) 798 if (thishdr_uid == homerecid)
799 { 799 {
800 m_homepos = textlength; 800 m_homepos = textlength;
801 break; 801 break;
802 } 802 }
803 if (thishdr_type < 2) textlength += thishdr_size; 803 if (thishdr_type < 2) textlength += thishdr_size;
804 } 804 }
diff --git a/noncore/apps/opie-reader/striphtml.cpp b/noncore/apps/opie-reader/striphtml.cpp
index c434dbb..a2ad56b 100644
--- a/noncore/apps/opie-reader/striphtml.cpp
+++ b/noncore/apps/opie-reader/striphtml.cpp
@@ -380,193 +380,193 @@ unsigned short striphtml::skip_ws()
380 while (ch < 33 && ch != UEOF); 380 while (ch < 33 && ch != UEOF);
381 return ch; 381 return ch;
382} 382}
383 383
384unsigned short striphtml::skip_ws_end() 384unsigned short striphtml::skip_ws_end()
385{ 385{
386 unsigned long dummy; 386 unsigned long dummy;
387 return skip_ws_end(dummy); 387 return skip_ws_end(dummy);
388} 388}
389 389
390unsigned short striphtml::skip_ws_end(unsigned long& pos) 390unsigned short striphtml::skip_ws_end(unsigned long& pos)
391{ 391{
392 tchar ch; 392 tchar ch;
393 CStyle sty; 393 CStyle sty;
394 do 394 do
395 { 395 {
396 mygetch(ch, sty, pos); 396 mygetch(ch, sty, pos);
397 } 397 }
398 while (ch != '>' && ch != UEOF); 398 while (ch != '>' && ch != UEOF);
399 return ch; 399 return ch;
400} 400}
401 401
402QString striphtml::getname(tchar& ch, const QString& nd) 402QString striphtml::getname(tchar& ch, const QString& nd)
403{ 403{
404 QString nm = ""; 404 QString nm = "";
405 // nm += ch; 405 // nm += ch;
406 CStyle sty; 406 CStyle sty;
407 unsigned long dummy; 407 unsigned long dummy;
408 while (1) 408 while (1)
409 { 409 {
410 // if ( QChar(ch).isLetterOrNumber() ) 410 // if ( QChar(ch).isLetterOrNumber() )
411 if (ch != UEOF && nd.find(ch, 0, false) == -1 && nm.length() < 2048) 411 if (ch != UEOF && nd.find(ch, 0, false) == -1 && nm.length() < 2048)
412 { 412 {
413 nm += ch; 413 nm += ch;
414 } 414 }
415 else 415 else
416 { 416 {
417 break; 417 break;
418 } 418 }
419 mygetch(ch, sty, dummy); 419 mygetch(ch, sty, dummy);
420 } 420 }
421 return nm; 421 return nm;
422} 422}
423 423
424QString striphtml::getattr(tchar& ch) 424QString striphtml::getattr(tchar& ch)
425{ 425{
426 QString ref; 426 QString ref;
427 CStyle sty; 427 CStyle sty;
428 unsigned long pos; 428 unsigned long pos;
429 if (ch == ' ') ch = skip_ws(); 429 if (ch == ' ') ch = skip_ws();
430 if (ch == '=') 430 if (ch == '=')
431 { 431 {
432 ch = skip_ws(); 432 ch = skip_ws();
433 if (ch == '"') 433 if (ch == '"')
434 { 434 {
435 mygetch(ch, sty, pos); 435 mygetch(ch, sty, pos);
436 ref = getname(ch, "\""); 436 ref = getname(ch, "\"");
437 ch = skip_ws(); 437 ch = skip_ws();
438 } 438 }
439 else if (ch == '\'') 439 else if (ch == '\'')
440 { 440 {
441 mygetch(ch, sty, pos); 441 mygetch(ch, sty, pos);
442 ref = getname(ch, "\'"); 442 ref = getname(ch, "\'");
443 ch = skip_ws(); 443 ch = skip_ws();
444 } 444 }
445 else 445 else
446 { 446 {
447 ref = getname(ch, " >"); 447 ref = getname(ch, " >");
448 if (ch == ' ') ch = skip_ws(); 448 if (ch == ' ') ch = skip_ws();
449 } 449 }
450 } 450 }
451 return ref; 451 return ref;
452} 452}
453 453
454linkType striphtml::hyperlink(unsigned int n, unsigned int, QString& w, QString& nm) 454linkType striphtml::hyperlink(unsigned int n, unsigned int, QString& w, QString& nm)
455{ 455{
456#if defined(USEQPE) || defined(_WINDOWS) 456#if defined(USEQPE) || defined(_WINDOWS)
457 QMap<unsigned long, QString>::Iterator hrefit = id2href->find(n); 457 QMap<unsigned long, QString>::Iterator hrefit = id2href->find(n);
458#else 458#else
459 QMap<unsigned long, QString>::iterator hrefit = id2href->find(n); 459 QMap<unsigned long, QString>::iterator hrefit = id2href->find(n);
460#endif 460#endif
461 if (hrefit == id2href->end()) 461 if (hrefit == id2href->end())
462 { 462 {
463 return eNone; 463 return eNone;
464 } 464 }
465 QString href = *hrefit; 465 QString href = *hrefit;
466#if defined(USEQPE) || defined(_WINDOWS) 466#if defined(USEQPE) || defined(_WINDOWS)
467 QMap<QString, unsigned long>::Iterator fpit = href2filepos->find(href); 467 QMap<QString, unsigned long>::Iterator fpit = href2filepos->find(href);
468#else 468#else
469 QMap<QString, unsigned long>::iterator fpit = href2filepos->find(href); 469 QMap<QString, unsigned long>::iterator fpit = href2filepos->find(href);
470#endif 470#endif
471 if (fpit == href2filepos->end()) 471 if (fpit == href2filepos->end())
472 { 472 {
473 if (href == "history.back()") 473 if (href == "history.back()")
474 { 474 {
475 QString fc = currentfile; 475 QString fc = currentfile;
476 unsigned long loc; 476 unsigned long loc = 0;
477 htmlmark m(fc, loc); 477 htmlmark m(fc, loc);
478 linkType ret = (m_nav.back(m)) ? eFile : eNone; 478 linkType ret = (m_nav.back(m)) ? eFile : eNone;
479 if (fc == m.filename()) 479 if (fc == m.filename())
480 { 480 {
481 if ((ret & eFile) != 0) 481 if ((ret & eFile) != 0)
482 { 482 {
483 locate(m.posn()); 483 locate(m.posn());
484 return eLink; 484 return eLink;
485 } 485 }
486 } 486 }
487 return eNone; 487 return eNone;
488 } 488 }
489 qDebug("Searching for %s", (const char*)href); 489 qDebug("Searching for %s", (const char*)href);
490 490
491 491
492 QString file, name; 492 QString file, name;
493 493
494 int colon = href.find('#'); 494 int colon = href.find('#');
495 if (colon >= 0) 495 if (colon >= 0)
496 { 496 {
497 file = dehtml(href.left(colon)); 497 file = dehtml(href.left(colon));
498 name = dehtml(href.right(href.length()-colon-1)); 498 name = dehtml(href.right(href.length()-colon-1));
499 } 499 }
500 else 500 else
501 { 501 {
502 file = dehtml(href); 502 file = dehtml(href);
503 } 503 }
504 504
505 qDebug("File:%s", (const char*)file); 505 qDebug("File:%s", (const char*)file);
506 qDebug("Name:%s", (const char*)name); 506 qDebug("Name:%s", (const char*)name);
507 507
508 508
509 if (file.isEmpty()) 509 if (file.isEmpty())
510 { 510 {
511 if (parent->findanchor(name)) 511 if (parent->findanchor(name))
512 { 512 {
513 reset(); 513 reset();
514 return eLink; 514 return eLink;
515 } 515 }
516 fpit = href2filepos->find(name); 516 fpit = href2filepos->find(name);
517 if (fpit != href2filepos->end()) 517 if (fpit != href2filepos->end())
518 { 518 {
519 locate(*fpit); 519 locate(*fpit);
520 return eLink; 520 return eLink;
521 } 521 }
522 else 522 else
523 { 523 {
524 // nm = QString("<a[^>]*name[ \t]*=[ \t]*\"") + name + "\""; 524 // nm = QString("<a[^>]*name[ \t]*=[ \t]*\"") + name + "\"";
525 qDebug("Do a search for:%s", (const char*)name); 525 qDebug("Do a search for:%s", (const char*)name);
526 findanchor(name); 526 findanchor(name);
527 return eLink; 527 return eLink;
528 } 528 }
529 } 529 }
530 else 530 else
531 // if (href.find('#') == -1) 531 // if (href.find('#') == -1)
532 { 532 {
533 if (m_bchm) 533 if (m_bchm)
534 { 534 {
535 w = file; 535 w = file;
536 nm = name; 536 nm = name;
537 return eFile; 537 return eFile;
538 } 538 }
539 else 539 else
540 { 540 {
541 QFileInfo f(currentfile); 541 QFileInfo f(currentfile);
542 QFileInfo f1(f.dir(true), file); 542 QFileInfo f1(f.dir(true), file);
543 if (f1.exists()) 543 if (f1.exists())
544 { 544 {
545 w = f1.absFilePath(); 545 w = f1.absFilePath();
546 nm = name; 546 nm = name;
547 } 547 }
548 else 548 else
549 { 549 {
550 w = file; 550 w = file;
551 } 551 }
552 return (f1.exists() ? eFile : eNone); 552 return (f1.exists() ? eFile : eNone);
553 } 553 }
554 } 554 }
555 return eNone; 555 return eNone;
556 } 556 }
557 locate(*fpit); 557 locate(*fpit);
558 // parent->locate((*href2filepos)[(*id2href)[n]]); 558 // parent->locate((*href2filepos)[(*id2href)[n]]);
559 return eLink; 559 return eLink;
560} 560}
561/* 561/*
562unsigned short striphtml::parse_m() 562unsigned short striphtml::parse_m()
563{ 563{
564 tchar ch; 564 tchar ch;
565 CStyle sty; 565 CStyle sty;
566 unsigned long dummy; 566 unsigned long dummy;
567 mygetch(ch, sty, dummy); 567 mygetch(ch, sty, dummy);
568 if (ch == 'm' || ch == 'M') 568 if (ch == 'm' || ch == 'M')
569 { 569 {
570 ch = skip_ws_end(); 570 ch = skip_ws_end();
571 if (ch == '>') 571 if (ch == '>')
572 { 572 {
diff --git a/noncore/apps/tinykate/libkate/document/katehighlight.cpp b/noncore/apps/tinykate/libkate/document/katehighlight.cpp
index 89024f7..ee6030f 100644
--- a/noncore/apps/tinykate/libkate/document/katehighlight.cpp
+++ b/noncore/apps/tinykate/libkate/document/katehighlight.cpp
@@ -1223,229 +1223,231 @@ void Highlight::makeContextList()
1223 datasub=HlManager::self()->syntax->getSubItems(data); 1223 datasub=HlManager::self()->syntax->getSubItems(data);
1224 bool tmpbool; 1224 bool tmpbool;
1225 if (tmpbool=HlManager::self()->syntax->nextItem(datasub)) 1225 if (tmpbool=HlManager::self()->syntax->nextItem(datasub))
1226 { 1226 {
1227 c->subItems=new QList<HlItem>; 1227 c->subItems=new QList<HlItem>;
1228 for (;tmpbool;tmpbool=HlManager::self()->syntax->nextItem(datasub)) 1228 for (;tmpbool;tmpbool=HlManager::self()->syntax->nextItem(datasub))
1229 c->subItems->append(createHlItem(datasub,iDl)); 1229 c->subItems->append(createHlItem(datasub,iDl));
1230 } 1230 }
1231 HlManager::self()->syntax->freeGroupInfo(datasub); 1231 HlManager::self()->syntax->freeGroupInfo(datasub);
1232 // end of sublevel 1232 // end of sublevel
1233 } 1233 }
1234// kdDebug(13010)<<"Last line in loop"<<endl; 1234// kdDebug(13010)<<"Last line in loop"<<endl;
1235 } 1235 }
1236 i++; 1236 i++;
1237 } 1237 }
1238 } 1238 }
1239 1239
1240 HlManager::self()->syntax->freeGroupInfo(data); 1240 HlManager::self()->syntax->freeGroupInfo(data);
1241 1241
1242 1242
1243} 1243}
1244 1244
1245HlManager::HlManager() : QObject(0L) 1245HlManager::HlManager() : QObject(0L)
1246{ 1246{
1247 syntax = new SyntaxDocument(); 1247 syntax = new SyntaxDocument();
1248 SyntaxModeList modeList = syntax->modeList(); 1248 SyntaxModeList modeList = syntax->modeList();
1249 1249
1250 hlList.setAutoDelete(true); 1250 hlList.setAutoDelete(true);
1251 hlList.append(new Highlight(0)); 1251 hlList.append(new Highlight(0));
1252 1252
1253 uint i=0; 1253 uint i=0;
1254 while (i < modeList.count()) 1254 while (i < modeList.count())
1255 { 1255 {
1256 hlList.append(new Highlight(modeList.at(i))); 1256 hlList.append(new Highlight(modeList.at(i)));
1257 i++; 1257 i++;
1258 } 1258 }
1259} 1259}
1260 1260
1261HlManager::~HlManager() { 1261HlManager::~HlManager() {
1262 if(syntax) delete syntax; 1262 if(syntax) delete syntax;
1263} 1263}
1264 1264
1265HlManager *HlManager::self() 1265HlManager *HlManager::self()
1266{ 1266{
1267 if ( !s_pSelf ) 1267 if ( !s_pSelf )
1268 s_pSelf = new HlManager; 1268 s_pSelf = new HlManager;
1269 return s_pSelf; 1269 return s_pSelf;
1270} 1270}
1271 1271
1272Highlight *HlManager::getHl(int n) { 1272Highlight *HlManager::getHl(int n) {
1273 if (n < 0 || n >= (int) hlList.count()) n = 0; 1273 if (n < 0 || n >= (int) hlList.count()) n = 0;
1274 return hlList.at(n); 1274 return hlList.at(n);
1275} 1275}
1276 1276
1277int HlManager::defaultHl() { 1277int HlManager::defaultHl() {
1278 KateConfig *config; 1278 KateConfig *config;
1279 config = KGlobal::config(); 1279 config = KGlobal::config();
1280 config->setGroup("General Options"); 1280 config->setGroup("General Options");
1281 1281
1282#warning fixme return nameFind(config->readEntry("Highlight")); 1282#warning fixme return nameFind(config->readEntry("Highlight"));
1283 1283
1284} 1284}
1285 1285
1286 1286
1287int HlManager::nameFind(const QString &name) { 1287int HlManager::nameFind(const QString &name) {
1288 int z; 1288 int z;
1289 1289
1290 for (z = hlList.count() - 1; z > 0; z--) { 1290 for (z = hlList.count() - 1; z > 0; z--) {
1291 if (hlList.at(z)->iName == name) break; 1291 if (hlList.at(z)->iName == name) break;
1292 } 1292 }
1293 return z; 1293 return z;
1294} 1294}
1295 1295
1296int HlManager::wildcardFind(const QString &fileName) { 1296int HlManager::wildcardFind(const QString &fileName) {
1297 Highlight *highlight; 1297 Highlight *highlight;
1298 int p1, p2; 1298 int p1, p2;
1299 QString w; 1299 QString w;
1300 for (highlight = hlList.first(); highlight != 0L; highlight = hlList.next()) { 1300 for (highlight = hlList.first(); highlight != 0L; highlight = hlList.next()) {
1301 p1 = 0; 1301 p1 = 0;
1302 w = highlight->getWildcards(); 1302 w = highlight->getWildcards();
1303 while (p1 < (int) w.length()) { 1303 while (p1 < (int) w.length()) {
1304 p2 = w.find(';',p1); 1304 p2 = w.find(';',p1);
1305 if (p2 == -1) p2 = w.length(); 1305 if (p2 == -1) p2 = w.length();
1306 if (p1 < p2) { 1306 if (p1 < p2) {
1307 QRegExp regExp(w.mid(p1,p2 - p1),true,true); 1307 QRegExp regExp(w.mid(p1,p2 - p1),true,true);
1308 if (regExp.match(fileName) == 0) return hlList.at(); 1308 if (regExp.match(fileName) == 0) return hlList.at();
1309 } 1309 }
1310 p1 = p2 + 1; 1310 p1 = p2 + 1;
1311 } 1311 }
1312 } 1312 }
1313 return -1; 1313 return -1;
1314} 1314}
1315 1315
1316 1316
1317int HlManager::makeAttribs(Highlight *highlight, Attribute *a, int maxAttribs) { 1317int HlManager::makeAttribs(Highlight *highlight, Attribute *a, int maxAttribs) {
1318 ItemStyleList defaultStyleList; 1318 ItemStyleList defaultStyleList;
1319 ItemStyle *defaultStyle; 1319 ItemStyle *defaultStyle = 0;
1320 ItemDataList itemDataList; 1320 ItemDataList itemDataList;
1321 ItemData *itemData; 1321 ItemData *itemData;
1322 int nAttribs, z; 1322 int nAttribs, z;
1323 1323
1324 odebug << "HlManager::makeAttribs" << oendl; 1324 odebug << "HlManager::makeAttribs" << oendl;
1325 1325
1326 defaultStyleList.setAutoDelete(true); 1326 defaultStyleList.setAutoDelete(true);
1327 getDefaults(defaultStyleList); 1327 getDefaults(defaultStyleList);
1328 1328
1329// itemDataList.setAutoDelete(true); 1329// itemDataList.setAutoDelete(true);
1330 highlight->getItemDataList(itemDataList); 1330 highlight->getItemDataList(itemDataList);
1331 nAttribs = itemDataList.count(); 1331 nAttribs = itemDataList.count();
1332 for (z = 0; z < nAttribs; z++) { 1332 for (z = 0; z < nAttribs; z++) {
1333 odebug << "HlManager::makeAttribs: createing one attribute definition" << oendl; 1333 odebug << "HlManager::makeAttribs: creating an attribute definition" << oendl;
1334 itemData = itemDataList.at(z); 1334 itemData = itemDataList.at(z);
1335 if (itemData->defStyle) { 1335 if (itemData->defStyle) {
1336 // default style 1336 // default style
1337 defaultStyle = defaultStyleList.at(itemData->defStyleNum); 1337 defaultStyle = defaultStyleList.at(itemData->defStyleNum);
1338 a[z].col = defaultStyle->col; 1338 a[z].col = defaultStyle->col;
1339 a[z].selCol = defaultStyle->selCol; 1339 a[z].selCol = defaultStyle->selCol;
1340 a[z].bold = defaultStyle->bold; 1340 a[z].bold = defaultStyle->bold;
1341 a[z].italic = defaultStyle->italic; 1341 a[z].italic = defaultStyle->italic;
1342 } else { 1342 } else {
1343 // custom style 1343 // custom style
1344 a[z].col = itemData->col; 1344 a[z].col = itemData->col;
1345 a[z].selCol = itemData->selCol; 1345 a[z].selCol = itemData->selCol;
1346 a[z].bold = itemData->bold; 1346 a[z].bold = itemData->bold;
1347 a[z].italic = itemData->italic; 1347 a[z].italic = itemData->italic;
1348 } 1348 }
1349 } 1349 }
1350 1350
1351 for (; z < maxAttribs; z++) { 1351 for (; z < maxAttribs; z++) {
1352 a[z].col = black; 1352 a[z].col = black;
1353 a[z].selCol = black; 1353 a[z].selCol = black;
1354 a[z].bold = defaultStyle->bold; 1354 if (defaultStyle) {
1355 a[z].italic = defaultStyle->italic; 1355 a[z].bold = defaultStyle->bold;
1356 a[z].italic = defaultStyle->italic;
1357 }
1356 } 1358 }
1357 return nAttribs; 1359 return nAttribs;
1358} 1360}
1359 1361
1360int HlManager::defaultStyles() { 1362int HlManager::defaultStyles() {
1361 return 10; 1363 return 10;
1362} 1364}
1363 1365
1364QString HlManager::defaultStyleName(int n) 1366QString HlManager::defaultStyleName(int n)
1365{ 1367{
1366 static QStringList names; 1368 static QStringList names;
1367 1369
1368 if (names.isEmpty()) 1370 if (names.isEmpty())
1369 { 1371 {
1370 names << i18n("Normal"); 1372 names << i18n("Normal");
1371 names << i18n("Keyword"); 1373 names << i18n("Keyword");
1372 names << i18n("Data Type"); 1374 names << i18n("Data Type");
1373 names << i18n("Decimal/Value"); 1375 names << i18n("Decimal/Value");
1374 names << i18n("Base-N Integer"); 1376 names << i18n("Base-N Integer");
1375 names << i18n("Floating Point"); 1377 names << i18n("Floating Point");
1376 names << i18n("Character"); 1378 names << i18n("Character");
1377 names << i18n("String"); 1379 names << i18n("String");
1378 names << i18n("Comment"); 1380 names << i18n("Comment");
1379 names << i18n("Others"); 1381 names << i18n("Others");
1380 } 1382 }
1381 1383
1382 return names[n]; 1384 return names[n];
1383} 1385}
1384 1386
1385void HlManager::getDefaults(ItemStyleList &list) { 1387void HlManager::getDefaults(ItemStyleList &list) {
1386 KateConfig *config; 1388 KateConfig *config;
1387 int z; 1389 int z;
1388 ItemStyle *i; 1390 ItemStyle *i;
1389 QString s; 1391 QString s;
1390 QRgb col, selCol; 1392 QRgb col, selCol;
1391 1393
1392 list.setAutoDelete(true); 1394 list.setAutoDelete(true);
1393 //ItemStyle(color, selected color, bold, italic) 1395 //ItemStyle(color, selected color, bold, italic)
1394 list.append(new ItemStyle(black,white,false,false)); //normal 1396 list.append(new ItemStyle(black,white,false,false)); //normal
1395 list.append(new ItemStyle(black,white,true,false)); //keyword 1397 list.append(new ItemStyle(black,white,true,false)); //keyword
1396 list.append(new ItemStyle(darkRed,white,false,false)); //datatype 1398 list.append(new ItemStyle(darkRed,white,false,false)); //datatype
1397 list.append(new ItemStyle(blue,cyan,false,false)); //decimal/value 1399 list.append(new ItemStyle(blue,cyan,false,false)); //decimal/value
1398 list.append(new ItemStyle(darkCyan,cyan,false,false)); //base n 1400 list.append(new ItemStyle(darkCyan,cyan,false,false)); //base n
1399 list.append(new ItemStyle(darkMagenta,cyan,false,false));//float 1401 list.append(new ItemStyle(darkMagenta,cyan,false,false));//float
1400 list.append(new ItemStyle(magenta,magenta,false,false)); //char 1402 list.append(new ItemStyle(magenta,magenta,false,false)); //char
1401 list.append(new ItemStyle(red,red,false,false)); //string 1403 list.append(new ItemStyle(red,red,false,false)); //string
1402 list.append(new ItemStyle(darkGray,gray,false,true)); //comment 1404 list.append(new ItemStyle(darkGray,gray,false,true)); //comment
1403 list.append(new ItemStyle(darkGreen,green,false,false)); //others 1405 list.append(new ItemStyle(darkGreen,green,false,false)); //others
1404 1406
1405#warning fixme 1407#warning fixme
1406/* 1408/*
1407 config = KateFactory::instance()->config(); 1409 config = KateFactory::instance()->config();
1408 config->setGroup("Default Item Styles"); 1410 config->setGroup("Default Item Styles");
1409 for (z = 0; z < defaultStyles(); z++) { 1411 for (z = 0; z < defaultStyles(); z++) {
1410 i = list.at(z); 1412 i = list.at(z);
1411 s = config->readEntry(defaultStyleName(z)); 1413 s = config->readEntry(defaultStyleName(z));
1412 if (!s.isEmpty()) { 1414 if (!s.isEmpty()) {
1413 sscanf(s.latin1(),"%X,%X,%d,%d",&col,&selCol,&i->bold,&i->italic); 1415 sscanf(s.latin1(),"%X,%X,%d,%d",&col,&selCol,&i->bold,&i->italic);
1414 i->col.setRgb(col); 1416 i->col.setRgb(col);
1415 i->selCol.setRgb(selCol); 1417 i->selCol.setRgb(selCol);
1416 } 1418 }
1417 } 1419 }
1418*/ 1420*/
1419} 1421}
1420 1422
1421void HlManager::setDefaults(ItemStyleList &list) { 1423void HlManager::setDefaults(ItemStyleList &list) {
1422 KateConfig *config; 1424 KateConfig *config;
1423 int z; 1425 int z;
1424 ItemStyle *i; 1426 ItemStyle *i;
1425 char s[64]; 1427 char s[64];
1426#warning fixme 1428#warning fixme
1427/* 1429/*
1428 config = KateFactory::instance()->config(); 1430 config = KateFactory::instance()->config();
1429 config->setGroup("Default Item Styles"); 1431 config->setGroup("Default Item Styles");
1430 for (z = 0; z < defaultStyles(); z++) { 1432 for (z = 0; z < defaultStyles(); z++) {
1431 i = list.at(z); 1433 i = list.at(z);
1432 sprintf(s,"%X,%X,%d,%d",i->col.rgb(),i->selCol.rgb(),i->bold, i->italic); 1434 sprintf(s,"%X,%X,%d,%d",i->col.rgb(),i->selCol.rgb(),i->bold, i->italic);
1433 config->writeEntry(defaultStyleName(z),s); 1435 config->writeEntry(defaultStyleName(z),s);
1434 } 1436 }
1435*/ 1437*/
1436 emit changed(); 1438 emit changed();
1437} 1439}
1438 1440
1439 1441
1440int HlManager::highlights() { 1442int HlManager::highlights() {
1441 return (int) hlList.count(); 1443 return (int) hlList.count();
1442} 1444}
1443 1445
1444QString HlManager::hlName(int n) { 1446QString HlManager::hlName(int n) {
1445 return hlList.at(n)->iName; 1447 return hlList.at(n)->iName;
1446} 1448}
1447 1449
1448QString HlManager::hlSection(int n) { 1450QString HlManager::hlSection(int n) {
1449 return hlList.at(n)->iSection; 1451 return hlList.at(n)->iSection;
1450} 1452}
1451 1453
diff --git a/noncore/net/ftplib/ftplib.c b/noncore/net/ftplib/ftplib.c
index addf9d2..ce4c05f 100644
--- a/noncore/net/ftplib/ftplib.c
+++ b/noncore/net/ftplib/ftplib.c
@@ -688,193 +688,193 @@ static int FtpOpenPort(netbuf *nControl, netbuf **nData, int mode, int dir)
688 } 688 }
689 if (setsockopt(sData,SOL_SOCKET,SO_REUSEADDR, 689 if (setsockopt(sData,SOL_SOCKET,SO_REUSEADDR,
690 SETSOCKOPT_OPTVAL_TYPE &on,sizeof(on)) == -1) 690 SETSOCKOPT_OPTVAL_TYPE &on,sizeof(on)) == -1)
691 { 691 {
692 perror("setsockopt"); 692 perror("setsockopt");
693 net_close(sData); 693 net_close(sData);
694 return -1; 694 return -1;
695 } 695 }
696 if (setsockopt(sData,SOL_SOCKET,SO_LINGER, 696 if (setsockopt(sData,SOL_SOCKET,SO_LINGER,
697 SETSOCKOPT_OPTVAL_TYPE &lng,sizeof(lng)) == -1) 697 SETSOCKOPT_OPTVAL_TYPE &lng,sizeof(lng)) == -1)
698 { 698 {
699 perror("setsockopt"); 699 perror("setsockopt");
700 net_close(sData); 700 net_close(sData);
701 return -1; 701 return -1;
702 } 702 }
703 if (nControl->cmode == FTPLIB_PASSIVE) 703 if (nControl->cmode == FTPLIB_PASSIVE)
704 { 704 {
705 if (connect(sData, &sin.sa, sizeof(sin.sa)) == -1) 705 if (connect(sData, &sin.sa, sizeof(sin.sa)) == -1)
706 { 706 {
707 perror("connect"); 707 perror("connect");
708 net_close(sData); 708 net_close(sData);
709 return -1; 709 return -1;
710 } 710 }
711 } 711 }
712 else 712 else
713 { 713 {
714 sin.in.sin_port = 0; 714 sin.in.sin_port = 0;
715 if (bind(sData, &sin.sa, sizeof(sin)) == -1) 715 if (bind(sData, &sin.sa, sizeof(sin)) == -1)
716 { 716 {
717 perror("bind"); 717 perror("bind");
718 net_close(sData); 718 net_close(sData);
719 return 0; 719 return 0;
720 } 720 }
721 if (listen(sData, 1) < 0) 721 if (listen(sData, 1) < 0)
722 { 722 {
723 perror("listen"); 723 perror("listen");
724 net_close(sData); 724 net_close(sData);
725 return 0; 725 return 0;
726 } 726 }
727 if (getsockname(sData, &sin.sa, &l) < 0) 727 if (getsockname(sData, &sin.sa, &l) < 0)
728 return 0; 728 return 0;
729 sprintf(buf, "PORT %d,%d,%d,%d,%d,%d", 729 sprintf(buf, "PORT %d,%d,%d,%d,%d,%d",
730 (unsigned char) sin.sa.sa_data[2], 730 (unsigned char) sin.sa.sa_data[2],
731 (unsigned char) sin.sa.sa_data[3], 731 (unsigned char) sin.sa.sa_data[3],
732 (unsigned char) sin.sa.sa_data[4], 732 (unsigned char) sin.sa.sa_data[4],
733 (unsigned char) sin.sa.sa_data[5], 733 (unsigned char) sin.sa.sa_data[5],
734 (unsigned char) sin.sa.sa_data[0], 734 (unsigned char) sin.sa.sa_data[0],
735 (unsigned char) sin.sa.sa_data[1]); 735 (unsigned char) sin.sa.sa_data[1]);
736 if (!FtpSendCmd(buf,'2',nControl)) 736 if (!FtpSendCmd(buf,'2',nControl))
737 { 737 {
738 net_close(sData); 738 net_close(sData);
739 return 0; 739 return 0;
740 } 740 }
741 } 741 }
742 ctrl = calloc(1,sizeof(netbuf)); 742 ctrl = calloc(1,sizeof(netbuf));
743 if (ctrl == NULL) 743 if (ctrl == NULL)
744 { 744 {
745 perror("calloc"); 745 perror("calloc");
746 net_close(sData); 746 net_close(sData);
747 return -1; 747 return -1;
748 } 748 }
749 if ((mode == 'A') && ((ctrl->buf = malloc(FTPLIB_BUFSIZ)) == NULL)) 749 if ((mode == 'A') && ((ctrl->buf = malloc(FTPLIB_BUFSIZ)) == NULL))
750 { 750 {
751 perror("calloc"); 751 perror("calloc");
752 net_close(sData); 752 net_close(sData);
753 free(ctrl); 753 free(ctrl);
754 return -1; 754 return -1;
755 } 755 }
756 ctrl->handle = sData; 756 ctrl->handle = sData;
757 ctrl->dir = dir; 757 ctrl->dir = dir;
758 ctrl->idletime = nControl->idletime; 758 ctrl->idletime = nControl->idletime;
759 ctrl->idlearg = nControl->idlearg; 759 ctrl->idlearg = nControl->idlearg;
760 ctrl->xfered = 0; 760 ctrl->xfered = 0;
761 ctrl->xfered1 = 0; 761 ctrl->xfered1 = 0;
762 ctrl->cbbytes = nControl->cbbytes; 762 ctrl->cbbytes = nControl->cbbytes;
763 if (ctrl->idletime.tv_sec || ctrl->idletime.tv_usec || ctrl->cbbytes) 763 if (ctrl->idletime.tv_sec || ctrl->idletime.tv_usec || ctrl->cbbytes)
764 ctrl->idlecb = nControl->idlecb; 764 ctrl->idlecb = nControl->idlecb;
765 else 765 else
766 ctrl->idlecb = NULL; 766 ctrl->idlecb = NULL;
767 *nData = ctrl; 767 *nData = ctrl;
768 return 1; 768 return 1;
769} 769}
770 770
771/* 771/*
772 * FtpAcceptConnection - accept connection from server 772 * FtpAcceptConnection - accept connection from server
773 * 773 *
774 * return 1 if successful, 0 otherwise 774 * return 1 if successful, 0 otherwise
775 */ 775 */
776static int FtpAcceptConnection(netbuf *nData, netbuf *nControl) 776static int FtpAcceptConnection(netbuf *nData, netbuf *nControl)
777{ 777{
778 int sData; 778 int sData;
779 struct sockaddr addr; 779 struct sockaddr addr;
780 unsigned int l; 780 unsigned int l;
781 int i; 781 int i;
782 struct timeval tv; 782 struct timeval tv;
783 fd_set mask; 783 fd_set mask;
784 int rv; 784 int rv = 1;
785 785
786 FD_ZERO(&mask); 786 FD_ZERO(&mask);
787 FD_SET(nControl->handle, &mask); 787 FD_SET(nControl->handle, &mask);
788 FD_SET(nData->handle, &mask); 788 FD_SET(nData->handle, &mask);
789 tv.tv_usec = 0; 789 tv.tv_usec = 0;
790 tv.tv_sec = ACCEPT_TIMEOUT; 790 tv.tv_sec = ACCEPT_TIMEOUT;
791 printf("<<<<<<<<<<<<<<<<%d\n",ACCEPT_TIMEOUT); 791 printf("<<<<<<<<<<<<<<<<%d\n",ACCEPT_TIMEOUT);
792 i = nControl->handle; 792 i = nControl->handle;
793 if (i < nData->handle) 793 if (i < nData->handle)
794 i = nData->handle; 794 i = nData->handle;
795 i = select(i+1, &mask, NULL, NULL, &tv); 795 i = select(i+1, &mask, NULL, NULL, &tv);
796 if (i == -1) 796 if (i == -1)
797 { 797 {
798 strncpy(nControl->response, strerror(errno), 798 strncpy(nControl->response, strerror(errno),
799 sizeof(nControl->response)); 799 sizeof(nControl->response));
800 net_close(nData->handle); 800 net_close(nData->handle);
801 nData->handle = 0; 801 nData->handle = 0;
802 rv = 0; 802 rv = 0;
803 } 803 }
804 else if (i == 0) 804 else if (i == 0)
805 { 805 {
806 strcpy(nControl->response, "timed out waiting for connection"); 806 strcpy(nControl->response, "timed out waiting for connection");
807 net_close(nData->handle); 807 net_close(nData->handle);
808 nData->handle = 0; 808 nData->handle = 0;
809 rv = 0; 809 rv = 0;
810 } 810 }
811 else 811 else
812 { 812 {
813 if (FD_ISSET(nData->handle, &mask)) 813 if (FD_ISSET(nData->handle, &mask))
814 { 814 {
815 l = sizeof(addr); 815 l = sizeof(addr);
816 sData = accept(nData->handle, &addr, &l); 816 sData = accept(nData->handle, &addr, &l);
817 i = errno; 817 i = errno;
818 net_close(nData->handle); 818 net_close(nData->handle);
819 if (sData > 0) 819 if (sData > 0)
820 { 820 {
821 rv = 1; 821 rv = 1;
822 nData->handle = sData; 822 nData->handle = sData;
823 } 823 }
824 else 824 else
825 { 825 {
826 strncpy(nControl->response, strerror(i), 826 strncpy(nControl->response, strerror(i),
827 sizeof(nControl->response)); 827 sizeof(nControl->response));
828 nData->handle = 0; 828 nData->handle = 0;
829 rv = 0; 829 rv = 0;
830 } 830 }
831 } 831 }
832 else if (FD_ISSET(nControl->handle, &mask)) 832 else if (FD_ISSET(nControl->handle, &mask))
833 { 833 {
834 net_close(nData->handle); 834 net_close(nData->handle);
835 nData->handle = 0; 835 nData->handle = 0;
836 readresp('2', nControl); 836 readresp('2', nControl);
837 rv = 0; 837 rv = 0;
838 } 838 }
839 } 839 }
840 return rv; 840 return rv;
841} 841}
842 842
843/* 843/*
844 * FtpAccess - return a handle for a data stream 844 * FtpAccess - return a handle for a data stream
845 * 845 *
846 * return 1 if successful, 0 otherwise 846 * return 1 if successful, 0 otherwise
847 */ 847 */
848GLOBALDEF int FtpAccess(const char *path, int typ, int mode, netbuf *nControl, 848GLOBALDEF int FtpAccess(const char *path, int typ, int mode, netbuf *nControl,
849 netbuf **nData) 849 netbuf **nData)
850{ 850{
851 char buf[256]; 851 char buf[256];
852 int dir; 852 int dir;
853 if ((path == NULL) && 853 if ((path == NULL) &&
854 ((typ == FTPLIB_FILE_WRITE) || (typ == FTPLIB_FILE_READ))) 854 ((typ == FTPLIB_FILE_WRITE) || (typ == FTPLIB_FILE_READ)))
855 { 855 {
856 sprintf(nControl->response, 856 sprintf(nControl->response,
857 "Missing path argument for file transfer\n"); 857 "Missing path argument for file transfer\n");
858 return 0; 858 return 0;
859 } 859 }
860 sprintf(buf, "TYPE %c", mode); 860 sprintf(buf, "TYPE %c", mode);
861 if (!FtpSendCmd(buf, '2', nControl)) 861 if (!FtpSendCmd(buf, '2', nControl))
862 return 0; 862 return 0;
863 switch (typ) 863 switch (typ)
864 { 864 {
865 case FTPLIB_DIR: 865 case FTPLIB_DIR:
866 strcpy(buf,"NLST"); 866 strcpy(buf,"NLST");
867 dir = FTPLIB_READ; 867 dir = FTPLIB_READ;
868 break; 868 break;
869 case FTPLIB_DIR_VERBOSE: 869 case FTPLIB_DIR_VERBOSE:
870 strcpy(buf,"LIST"); 870 strcpy(buf,"LIST");
871 dir = FTPLIB_READ; 871 dir = FTPLIB_READ;
872 break; 872 break;
873 case FTPLIB_FILE_READ: 873 case FTPLIB_FILE_READ:
874 strcpy(buf,"RETR"); 874 strcpy(buf,"RETR");
875 dir = FTPLIB_READ; 875 dir = FTPLIB_READ;
876 break; 876 break;
877 case FTPLIB_FILE_WRITE: 877 case FTPLIB_FILE_WRITE:
878 strcpy(buf,"STOR"); 878 strcpy(buf,"STOR");
879 dir = FTPLIB_WRITE; 879 dir = FTPLIB_WRITE;
880 break; 880 break;
diff --git a/noncore/settings/sysinfo/contrib/dhry.c b/noncore/settings/sysinfo/contrib/dhry.c
index 07fd1c0..5426157 100644
--- a/noncore/settings/sysinfo/contrib/dhry.c
+++ b/noncore/settings/sysinfo/contrib/dhry.c
@@ -479,193 +479,193 @@ double dtime()
479 ************************************************************************* 479 *************************************************************************
480 */ 480 */
481 481
482#include <stdio.h> 482#include <stdio.h>
483#include <stdlib.h> 483#include <stdlib.h>
484#include <string.h> 484#include <string.h>
485#include "dhry.h" 485#include "dhry.h"
486 486
487/* Global Variables: */ 487/* Global Variables: */
488 488
489Rec_Pointer Ptr_Glob, 489Rec_Pointer Ptr_Glob,
490 Next_Ptr_Glob; 490 Next_Ptr_Glob;
491int Int_Glob; 491int Int_Glob;
492Boolean Bool_Glob; 492Boolean Bool_Glob;
493char Ch_1_Glob, 493char Ch_1_Glob,
494 Ch_2_Glob; 494 Ch_2_Glob;
495int Arr_1_Glob [50]; 495int Arr_1_Glob [50];
496int Arr_2_Glob [50] [50]; 496int Arr_2_Glob [50] [50];
497 497
498char Reg_Define[32] = "Register option selected."; 498char Reg_Define[32] = "Register option selected.";
499 499
500//extern char *malloc (); 500//extern char *malloc ();
501Enumeration Func_1 (); 501Enumeration Func_1 ();
502 /* 502 /*
503 forward declaration necessary since Enumeration may not simply be int 503 forward declaration necessary since Enumeration may not simply be int
504 */ 504 */
505 505
506#ifndef ROPT 506#ifndef ROPT
507#define REG 507#define REG
508 /* REG becomes defined as empty */ 508 /* REG becomes defined as empty */
509 /* i.e. no register variables */ 509 /* i.e. no register variables */
510#else 510#else
511#define REG register 511#define REG register
512#endif 512#endif
513 513
514 514
515/* variables for time measurement: */ 515/* variables for time measurement: */
516 516
517#define Too_Small_Time 2 517#define Too_Small_Time 2
518 /* Measurements should last at least 2 seconds */ 518 /* Measurements should last at least 2 seconds */
519 519
520double Begin_Time, 520double Begin_Time,
521 End_Time, 521 End_Time,
522 User_Time; 522 User_Time;
523 523
524double Microseconds, 524double Microseconds,
525 Dhrystones_Per_Second, 525 Dhrystones_Per_Second,
526 Vax_Mips; 526 Vax_Mips;
527 527
528/* end of variables for time measurement */ 528/* end of variables for time measurement */
529 529
530/**********************************************************************************************/ 530/**********************************************************************************************/
531 531
532 532
533Proc_1 (Ptr_Val_Par) 533Proc_1 (Ptr_Val_Par)
534/******************/ 534/******************/
535 535
536REG Rec_Pointer Ptr_Val_Par; 536REG Rec_Pointer Ptr_Val_Par;
537 /* executed once */ 537 /* executed once */
538{ 538{
539 REG Rec_Pointer Next_Record = Ptr_Val_Par->Ptr_Comp; 539 REG Rec_Pointer Next_Record = Ptr_Val_Par->Ptr_Comp;
540 /* == Ptr_Glob_Next */ 540 /* == Ptr_Glob_Next */
541 /* Local variable, initialized with Ptr_Val_Par->Ptr_Comp, */ 541 /* Local variable, initialized with Ptr_Val_Par->Ptr_Comp, */
542 /* corresponds to "rename" in Ada, "with" in Pascal */ 542 /* corresponds to "rename" in Ada, "with" in Pascal */
543 543
544 structassign (*Ptr_Val_Par->Ptr_Comp, *Ptr_Glob); 544 structassign (*Ptr_Val_Par->Ptr_Comp, *Ptr_Glob);
545 Ptr_Val_Par->variant.var_1.Int_Comp = 5; 545 Ptr_Val_Par->variant.var_1.Int_Comp = 5;
546 Next_Record->variant.var_1.Int_Comp 546 Next_Record->variant.var_1.Int_Comp
547 = Ptr_Val_Par->variant.var_1.Int_Comp; 547 = Ptr_Val_Par->variant.var_1.Int_Comp;
548 Next_Record->Ptr_Comp = Ptr_Val_Par->Ptr_Comp; 548 Next_Record->Ptr_Comp = Ptr_Val_Par->Ptr_Comp;
549 Proc_3 (&Next_Record->Ptr_Comp); 549 Proc_3 (&Next_Record->Ptr_Comp);
550 /* Ptr_Val_Par->Ptr_Comp->Ptr_Comp 550 /* Ptr_Val_Par->Ptr_Comp->Ptr_Comp
551 == Ptr_Glob->Ptr_Comp */ 551 == Ptr_Glob->Ptr_Comp */
552 if (Next_Record->Discr == Ident_1) 552 if (Next_Record->Discr == Ident_1)
553 /* then, executed */ 553 /* then, executed */
554 { 554 {
555 Next_Record->variant.var_1.Int_Comp = 6; 555 Next_Record->variant.var_1.Int_Comp = 6;
556 Proc_6 (Ptr_Val_Par->variant.var_1.Enum_Comp, 556 Proc_6 (Ptr_Val_Par->variant.var_1.Enum_Comp,
557 &Next_Record->variant.var_1.Enum_Comp); 557 &Next_Record->variant.var_1.Enum_Comp);
558 Next_Record->Ptr_Comp = Ptr_Glob->Ptr_Comp; 558 Next_Record->Ptr_Comp = Ptr_Glob->Ptr_Comp;
559 Proc_7 (Next_Record->variant.var_1.Int_Comp, 10, 559 Proc_7 (Next_Record->variant.var_1.Int_Comp, 10,
560 &Next_Record->variant.var_1.Int_Comp); 560 &Next_Record->variant.var_1.Int_Comp);
561 } 561 }
562 else /* not executed */ 562 else /* not executed */
563 structassign (*Ptr_Val_Par, *Ptr_Val_Par->Ptr_Comp); 563 structassign (*Ptr_Val_Par, *Ptr_Val_Par->Ptr_Comp);
564} /* Proc_1 */ 564} /* Proc_1 */
565 565
566 566
567Proc_2 (Int_Par_Ref) 567Proc_2 (Int_Par_Ref)
568/******************/ 568/******************/
569 /* executed once */ 569 /* executed once */
570 /* *Int_Par_Ref == 1, becomes 4 */ 570 /* *Int_Par_Ref == 1, becomes 4 */
571 571
572One_Fifty *Int_Par_Ref; 572One_Fifty *Int_Par_Ref;
573{ 573{
574 One_Fifty Int_Loc; 574 One_Fifty Int_Loc;
575 Enumeration Enum_Loc; 575 Enumeration Enum_Loc = Ident_2;
576 576
577 Int_Loc = *Int_Par_Ref + 10; 577 Int_Loc = *Int_Par_Ref + 10;
578 do /* executed once */ 578 do /* executed once */
579 if (Ch_1_Glob == 'A') 579 if (Ch_1_Glob == 'A')
580 /* then, executed */ 580 /* then, executed */
581 { 581 {
582 Int_Loc -= 1; 582 Int_Loc -= 1;
583 *Int_Par_Ref = Int_Loc - Int_Glob; 583 *Int_Par_Ref = Int_Loc - Int_Glob;
584 Enum_Loc = Ident_1; 584 Enum_Loc = Ident_1;
585 } /* if */ 585 } /* if */
586 while (Enum_Loc != Ident_1); /* true */ 586 while (Enum_Loc != Ident_1); /* true */
587} /* Proc_2 */ 587} /* Proc_2 */
588 588
589 589
590Proc_3 (Ptr_Ref_Par) 590Proc_3 (Ptr_Ref_Par)
591/******************/ 591/******************/
592 /* executed once */ 592 /* executed once */
593 /* Ptr_Ref_Par becomes Ptr_Glob */ 593 /* Ptr_Ref_Par becomes Ptr_Glob */
594 594
595Rec_Pointer *Ptr_Ref_Par; 595Rec_Pointer *Ptr_Ref_Par;
596 596
597{ 597{
598 if (Ptr_Glob != Null) 598 if (Ptr_Glob != Null)
599 /* then, executed */ 599 /* then, executed */
600 *Ptr_Ref_Par = Ptr_Glob->Ptr_Comp; 600 *Ptr_Ref_Par = Ptr_Glob->Ptr_Comp;
601 Proc_7 (10, Int_Glob, &Ptr_Glob->variant.var_1.Int_Comp); 601 Proc_7 (10, Int_Glob, &Ptr_Glob->variant.var_1.Int_Comp);
602} /* Proc_3 */ 602} /* Proc_3 */
603 603
604 604
605Proc_4 () /* without parameters */ 605Proc_4 () /* without parameters */
606/*******/ 606/*******/
607 /* executed once */ 607 /* executed once */
608{ 608{
609 Boolean Bool_Loc; 609 Boolean Bool_Loc;
610 610
611 Bool_Loc = Ch_1_Glob == 'A'; 611 Bool_Loc = Ch_1_Glob == 'A';
612 Bool_Glob = Bool_Loc | Bool_Glob; 612 Bool_Glob = Bool_Loc | Bool_Glob;
613 Ch_2_Glob = 'B'; 613 Ch_2_Glob = 'B';
614} /* Proc_4 */ 614} /* Proc_4 */
615 615
616 616
617Proc_5 () /* without parameters */ 617Proc_5 () /* without parameters */
618/*******/ 618/*******/
619 /* executed once */ 619 /* executed once */
620{ 620{
621 Ch_1_Glob = 'A'; 621 Ch_1_Glob = 'A';
622 Bool_Glob = false; 622 Bool_Glob = false;
623} /* Proc_5 */ 623} /* Proc_5 */
624 624
625 625
626 /* Procedure for the assignment of structures, */ 626 /* Procedure for the assignment of structures, */
627 /* if the C compiler doesn't support this feature */ 627 /* if the C compiler doesn't support this feature */
628#ifdef NOSTRUCTASSIGN 628#ifdef NOSTRUCTASSIGN
629memcpy (d, s, l) 629memcpy (d, s, l)
630register char *d; 630register char *d;
631register char *s; 631register char *s;
632register int l; 632register int l;
633{ 633{
634 while (l--) *d++ = *s++; 634 while (l--) *d++ = *s++;
635} 635}
636#endif 636#endif
637 637
638 638
639Proc_6 (Enum_Val_Par, Enum_Ref_Par) 639Proc_6 (Enum_Val_Par, Enum_Ref_Par)
640/*********************************/ 640/*********************************/
641 /* executed once */ 641 /* executed once */
642 /* Enum_Val_Par == Ident_3, Enum_Ref_Par becomes Ident_2 */ 642 /* Enum_Val_Par == Ident_3, Enum_Ref_Par becomes Ident_2 */
643 643
644Enumeration Enum_Val_Par; 644Enumeration Enum_Val_Par;
645Enumeration *Enum_Ref_Par; 645Enumeration *Enum_Ref_Par;
646{ 646{
647 *Enum_Ref_Par = Enum_Val_Par; 647 *Enum_Ref_Par = Enum_Val_Par;
648 if (! Func_3 (Enum_Val_Par)) 648 if (! Func_3 (Enum_Val_Par))
649 /* then, not executed */ 649 /* then, not executed */
650 *Enum_Ref_Par = Ident_4; 650 *Enum_Ref_Par = Ident_4;
651 switch (Enum_Val_Par) 651 switch (Enum_Val_Par)
652 { 652 {
653 case Ident_1: 653 case Ident_1:
654 *Enum_Ref_Par = Ident_1; 654 *Enum_Ref_Par = Ident_1;
655 break; 655 break;
656 case Ident_2: 656 case Ident_2:
657 if (Int_Glob > 100) 657 if (Int_Glob > 100)
658 /* then */ 658 /* then */
659 *Enum_Ref_Par = Ident_1; 659 *Enum_Ref_Par = Ident_1;
660 else *Enum_Ref_Par = Ident_4; 660 else *Enum_Ref_Par = Ident_4;
661 break; 661 break;
662 case Ident_3: /* executed */ 662 case Ident_3: /* executed */
663 *Enum_Ref_Par = Ident_2; 663 *Enum_Ref_Par = Ident_2;
664 break; 664 break;
665 case Ident_4: break; 665 case Ident_4: break;
666 case Ident_5: 666 case Ident_5:
667 *Enum_Ref_Par = Ident_3; 667 *Enum_Ref_Par = Ident_3;
668 break; 668 break;
669 } /* switch */ 669 } /* switch */
670} /* Proc_6 */ 670} /* Proc_6 */
671 671