summaryrefslogtreecommitdiff
authorsandman <sandman>2002-10-29 16:00:45 (UTC)
committer sandman <sandman>2002-10-29 16:00:45 (UTC)
commite63cecc3821eda0cb3ace99479112d68bdc023e6 (patch) (unidiff)
treee01de4d0ecc3f392dd7a67bec2b3d5a968a85c13
parent5ca0a08f9f27391370b291df28b3de71db3bb175 (diff)
downloadopie-e63cecc3821eda0cb3ace99479112d68bdc023e6.zip
opie-e63cecc3821eda0cb3ace99479112d68bdc023e6.tar.gz
opie-e63cecc3821eda0cb3ace99479112d68bdc023e6.tar.bz2
- fix to scan /proc/mounts and not /etc/mtab for changes (this works on
systems where /etc/mtab is symlinked to proc, but fails on familiar)
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/stabmon.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/core/launcher/stabmon.cpp b/core/launcher/stabmon.cpp
index 2911a1c..3d0d534 100644
--- a/core/launcher/stabmon.cpp
+++ b/core/launcher/stabmon.cpp
@@ -1,92 +1,92 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21 21
22#include "stabmon.h" 22#include "stabmon.h"
23 23
24#include <qpe/qcopenvelope_qws.h> 24#include <qpe/qcopenvelope_qws.h>
25 25
26#include <qfile.h> 26#include <qfile.h>
27#include <qcstring.h> 27#include <qcstring.h>
28 28
29#include <sys/stat.h> 29#include <sys/stat.h>
30#include <unistd.h> 30#include <unistd.h>
31#include <stdlib.h> 31#include <stdlib.h>
32 32
33SysFileMonitor::SysFileMonitor(QObject* parent) : 33SysFileMonitor::SysFileMonitor(QObject* parent) :
34 QObject(parent) 34 QObject(parent)
35{ 35{
36 startTimer(2000); 36 startTimer(2000);
37} 37}
38 38
39const char * stab0 = "/var/run/stab"; 39const char * stab0 = "/var/run/stab";
40const char * stab1 = "/var/state/pcmcia/stab"; 40const char * stab1 = "/var/state/pcmcia/stab";
41const char * stab2 = "/var/lib/pcmcia/stab"; 41const char * stab2 = "/var/lib/pcmcia/stab";
42 42
43void SysFileMonitor::timerEvent(QTimerEvent*) 43void SysFileMonitor::timerEvent(QTimerEvent*)
44{ 44{
45 struct stat s; 45 struct stat s;
46 46
47 static const char * tab [] = { 47 static const char * tab [] = {
48 stab0, 48 stab0,
49 stab1, 49 stab1,
50 stab2 50 stab2
51 }; 51 };
52 static const int nstab = sizeof(tab)/sizeof(const char *); 52 static const int nstab = sizeof(tab)/sizeof(const char *);
53 static int last[nstab]; 53 static int last[nstab];
54 54
55 bool ch = FALSE; 55 bool ch = FALSE;
56 for ( int i=0; i<nstab; i++ ) { 56 for ( int i=0; i<nstab; i++ ) {
57 if ( ::stat(tab[i], &s)==0 && (long)s.st_mtime != last[i] ) { 57 if ( ::stat(tab[i], &s)==0 && (long)s.st_mtime != last[i] ) {
58 last[i] = (long)s.st_mtime; 58 last[i] = (long)s.st_mtime;
59 ch=TRUE; 59 ch=TRUE;
60 } 60 }
61 if ( ch ) { 61 if ( ch ) {
62 QCopEnvelope("QPE/Card", "stabChanged()" ); 62 QCopEnvelope("QPE/Card", "stabChanged()" );
63 break; 63 break;
64 } 64 }
65 } 65 }
66 66
67 // st_size is no use, it's 0 for /proc/mounts too. Read it all. 67 // st_size is no use, it's 0 for /proc/mounts too. Read it all.
68 static int mtabSize = 0; 68 static int mtabSize = 0;
69 QFile f( "/etc/mtab" ); 69 QFile f( "/proc/mounts" );
70 if ( f.open(IO_ReadOnly) ) { 70 if ( f.open(IO_ReadOnly) ) {
71#if 0 71#if 0
72 // readAll does not work correctly on sequential devices (as eg. /proc files) 72 // readAll does not work correctly on sequential devices (as eg. /proc files)
73 QByteArray ba = f.readAll(); 73 QByteArray ba = f.readAll();
74 if ( (int)ba.size() != mtabSize ) { 74 if ( (int)ba.size() != mtabSize ) {
75 mtabSize = (int)ba.size(); 75 mtabSize = (int)ba.size();
76 QCopEnvelope("QPE/Card", "mtabChanged()" ); 76 QCopEnvelope("QPE/Card", "mtabChanged()" );
77 } 77 }
78#else 78#else
79 QString s; 79 QString s;
80 while( !f.atEnd() ) { 80 while( !f.atEnd() ) {
81 QString tmp; 81 QString tmp;
82 f.readLine( tmp, 1024 ); 82 f.readLine( tmp, 1024 );
83 s += tmp; 83 s += tmp;
84 } 84 }
85 if ( (int)s.length() != mtabSize ) { 85 if ( (int)s.length() != mtabSize ) {
86 mtabSize = (int)s.length(); 86 mtabSize = (int)s.length();
87 QCopEnvelope("QPE/Card", "mtabChanged()" ); 87 QCopEnvelope("QPE/Card", "mtabChanged()" );
88 } 88 }
89 #endif 89 #endif
90 } 90 }
91} 91}
92 92