author | alwin <alwin> | 2004-03-02 12:21:11 (UTC) |
---|---|---|
committer | alwin <alwin> | 2004-03-02 12:21:11 (UTC) |
commit | b6b1c97559c0ed9f2e33632272426bf98f289232 (patch) (unidiff) | |
tree | d3a9987704770cdf5eb14e1136f6e3ecb2f36a04 /library/storage.cpp | |
parent | 0d59c780513da78033f4d9040475dee9db0256d4 (diff) | |
download | opie-b6b1c97559c0ed9f2e33632272426bf98f289232.zip opie-b6b1c97559c0ed9f2e33632272426bf98f289232.tar.gz opie-b6b1c97559c0ed9f2e33632272426bf98f289232.tar.bz2 |
applied the patch generated by the optimize_connect script from
TT.
-rw-r--r-- | library/storage.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/library/storage.cpp b/library/storage.cpp index 0ea465b..fcee689 100644 --- a/library/storage.cpp +++ b/library/storage.cpp | |||
@@ -2,194 +2,194 @@ | |||
2 | ** Copyright (C) Holger 'zecke' Freyther <freyther@kde.org> | 2 | ** Copyright (C) Holger 'zecke' Freyther <freyther@kde.org> |
3 | ** Copyright (C) Lorn Potter <llornkcor@handhelds.org> | 3 | ** Copyright (C) Lorn Potter <llornkcor@handhelds.org> |
4 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. | 4 | ** Copyright (C) 2000 Trolltech AS. All rights reserved. |
5 | ** | 5 | ** |
6 | ** This file is part of Opie Environment. | 6 | ** This file is part of Opie Environment. |
7 | ** | 7 | ** |
8 | ** This file may be distributed and/or modified under the terms of the | 8 | ** This file may be distributed and/or modified under the terms of the |
9 | ** GNU General Public License version 2 as published by the Free Software | 9 | ** GNU General Public License version 2 as published by the Free Software |
10 | ** Foundation and appearing in the file LICENSE.GPL included in the | 10 | ** Foundation and appearing in the file LICENSE.GPL included in the |
11 | ** packaging of this file. | 11 | ** packaging of this file. |
12 | ** | 12 | ** |
13 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 13 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
14 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 14 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
15 | ** | 15 | ** |
16 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 16 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
17 | ** | 17 | ** |
18 | ** Contact info@trolltech.com if any conditions of this licensing are | 18 | ** Contact info@trolltech.com if any conditions of this licensing are |
19 | ** not clear to you. | 19 | ** not clear to you. |
20 | ** | 20 | ** |
21 | **********************************************************************/ | 21 | **********************************************************************/ |
22 | 22 | ||
23 | #include <qpe/storage.h> | 23 | #include <qpe/storage.h> |
24 | 24 | ||
25 | #include <qcopchannel_qws.h> | 25 | #include <qcopchannel_qws.h> |
26 | 26 | ||
27 | #include <stdio.h> | 27 | #include <stdio.h> |
28 | 28 | ||
29 | #if defined(_OS_LINUX_) || defined(Q_OS_LINUX) | 29 | #if defined(_OS_LINUX_) || defined(Q_OS_LINUX) |
30 | #include <sys/vfs.h> | 30 | #include <sys/vfs.h> |
31 | #include <mntent.h> | 31 | #include <mntent.h> |
32 | #endif | 32 | #endif |
33 | 33 | ||
34 | #ifdef Q_OS_MACX | 34 | #ifdef Q_OS_MACX |
35 | # include <sys/param.h> | 35 | # include <sys/param.h> |
36 | # include <sys/ucred.h> | 36 | # include <sys/ucred.h> |
37 | # include <sys/mount.h> | 37 | # include <sys/mount.h> |
38 | # include <stdio.h> // For strerror() | 38 | # include <stdio.h> // For strerror() |
39 | # include <errno.h> | 39 | # include <errno.h> |
40 | #endif /* Q_OS_MACX */ | 40 | #endif /* Q_OS_MACX */ |
41 | 41 | ||
42 | 42 | ||
43 | // Shouldn't be here ! (eilers) | 43 | // Shouldn't be here ! (eilers) |
44 | // #include <sys/vfs.h> | 44 | // #include <sys/vfs.h> |
45 | // #include <mntent.h> | 45 | // #include <mntent.h> |
46 | 46 | ||
47 | 47 | ||
48 | static bool isCF(const QString& m) | 48 | static bool isCF(const QString& m) |
49 | { | 49 | { |
50 | 50 | ||
51 | #ifndef Q_OS_MACX | 51 | #ifndef Q_OS_MACX |
52 | FILE* f = fopen("/var/run/stab", "r"); | 52 | FILE* f = fopen("/var/run/stab", "r"); |
53 | if (!f) f = fopen("/var/state/pcmcia/stab", "r"); | 53 | if (!f) f = fopen("/var/state/pcmcia/stab", "r"); |
54 | if (!f) f = fopen("/var/lib/pcmcia/stab", "r"); | 54 | if (!f) f = fopen("/var/lib/pcmcia/stab", "r"); |
55 | if ( f ) | 55 | if ( f ) |
56 | { | 56 | { |
57 | char line[1024]; | 57 | char line[1024]; |
58 | char devtype[80]; | 58 | char devtype[80]; |
59 | char devname[80]; | 59 | char devname[80]; |
60 | while ( fgets( line, 1024, f ) ) | 60 | while ( fgets( line, 1024, f ) ) |
61 | { | 61 | { |
62 | // 0 ide ide-cs 0 hda 3 0 | 62 | // 0 ide ide-cs 0 hda 3 0 |
63 | if ( sscanf(line,"%*d %s %*s %*s %s", devtype, devname )==2 ) | 63 | if ( sscanf(line,"%*d %s %*s %*s %s", devtype, devname )==2 ) |
64 | { | 64 | { |
65 | if ( QString(devtype) == "ide" && m.find(devname)>0 ) | 65 | if ( QString(devtype) == "ide" && m.find(devname)>0 ) |
66 | { | 66 | { |
67 | fclose(f); | 67 | fclose(f); |
68 | return TRUE; | 68 | return TRUE; |
69 | } | 69 | } |
70 | } | 70 | } |
71 | } | 71 | } |
72 | fclose(f); | 72 | fclose(f); |
73 | } | 73 | } |
74 | #endif /* Q_OS_MACX */ | 74 | #endif /* Q_OS_MACX */ |
75 | return FALSE; | 75 | return FALSE; |
76 | } | 76 | } |
77 | 77 | ||
78 | /*! \class StorageInfo storage.h | 78 | /*! \class StorageInfo storage.h |
79 | \brief The StorageInfo class describes the disks mounted on the file system. | 79 | \brief The StorageInfo class describes the disks mounted on the file system. |
80 | 80 | ||
81 | This class provides access to the mount information for the Linux | 81 | This class provides access to the mount information for the Linux |
82 | filesystem. Each mount point is represented by the FileSystem class. | 82 | filesystem. Each mount point is represented by the FileSystem class. |
83 | To ensure this class has the most up to date size information, call | 83 | To ensure this class has the most up to date size information, call |
84 | the update() method. Note that this will automatically be signaled | 84 | the update() method. Note that this will automatically be signaled |
85 | by the operating system when a disk has been mounted or unmounted. | 85 | by the operating system when a disk has been mounted or unmounted. |
86 | 86 | ||
87 | \ingroup qtopiaemb | 87 | \ingroup qtopiaemb |
88 | */ | 88 | */ |
89 | 89 | ||
90 | /*! Constructor that determines the current mount points of the filesystem. | 90 | /*! Constructor that determines the current mount points of the filesystem. |
91 | The standard \a parent parameters is passed on to QObject. | 91 | The standard \a parent parameters is passed on to QObject. |
92 | */ | 92 | */ |
93 | StorageInfo::StorageInfo( QObject *parent ) | 93 | StorageInfo::StorageInfo( QObject *parent ) |
94 | : QObject( parent ) | 94 | : QObject( parent ) |
95 | { | 95 | { |
96 | mFileSystems.setAutoDelete( TRUE ); | 96 | mFileSystems.setAutoDelete( TRUE ); |
97 | channel = new QCopChannel( "QPE/Card", this ); | 97 | channel = new QCopChannel( "QPE/Card", this ); |
98 | connect( channel, SIGNAL(received(const QCString &, const QByteArray &)), | 98 | connect( channel, SIGNAL(received(const QCString&,const QByteArray&)), |
99 | this, SLOT(cardMessage( const QCString &, const QByteArray &)) ); | 99 | this, SLOT(cardMessage(const QCString&,const QByteArray&)) ); |
100 | update(); | 100 | update(); |
101 | } | 101 | } |
102 | 102 | ||
103 | /*! Returns the longest matching FileSystem that starts with the | 103 | /*! Returns the longest matching FileSystem that starts with the |
104 | same prefix as \a filename as its mount point. | 104 | same prefix as \a filename as its mount point. |
105 | */ | 105 | */ |
106 | const FileSystem *StorageInfo::fileSystemOf( const QString &filename ) | 106 | const FileSystem *StorageInfo::fileSystemOf( const QString &filename ) |
107 | { | 107 | { |
108 | for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) | 108 | for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) |
109 | { | 109 | { |
110 | if ( filename.startsWith( (*i)->path() ) ) | 110 | if ( filename.startsWith( (*i)->path() ) ) |
111 | return (*i); | 111 | return (*i); |
112 | } | 112 | } |
113 | return 0; | 113 | return 0; |
114 | } | 114 | } |
115 | 115 | ||
116 | 116 | ||
117 | void StorageInfo::cardMessage( const QCString& msg, const QByteArray& ) | 117 | void StorageInfo::cardMessage( const QCString& msg, const QByteArray& ) |
118 | { | 118 | { |
119 | if ( msg == "mtabChanged()" ) | 119 | if ( msg == "mtabChanged()" ) |
120 | update(); | 120 | update(); |
121 | } | 121 | } |
122 | 122 | ||
123 | 123 | ||
124 | /*! Updates the mount and free space available information for each mount | 124 | /*! Updates the mount and free space available information for each mount |
125 | point. This method is automatically called when a disk is mounted or | 125 | point. This method is automatically called when a disk is mounted or |
126 | unmounted. | 126 | unmounted. |
127 | */ | 127 | */ |
128 | // cause of the lack of a d pointer we need | 128 | // cause of the lack of a d pointer we need |
129 | // to store informations in a config file :( | 129 | // to store informations in a config file :( |
130 | void StorageInfo::update() | 130 | void StorageInfo::update() |
131 | { | 131 | { |
132 | //qDebug("StorageInfo::updating"); | 132 | //qDebug("StorageInfo::updating"); |
133 | #if defined(_OS_LINUX_) || defined(Q_OS_LINUX) | 133 | #if defined(_OS_LINUX_) || defined(Q_OS_LINUX) |
134 | struct mntent *me; | 134 | struct mntent *me; |
135 | FILE *mntfp = setmntent( "/etc/mtab", "r" ); | 135 | FILE *mntfp = setmntent( "/etc/mtab", "r" ); |
136 | 136 | ||
137 | QStringList curdisks; | 137 | QStringList curdisks; |
138 | QStringList curopts; | 138 | QStringList curopts; |
139 | QStringList curfs; | 139 | QStringList curfs; |
140 | bool rebuild = FALSE; | 140 | bool rebuild = FALSE; |
141 | int n=0; | 141 | int n=0; |
142 | if ( mntfp ) | 142 | if ( mntfp ) |
143 | { | 143 | { |
144 | while ( (me = getmntent( mntfp )) != 0 ) | 144 | while ( (me = getmntent( mntfp )) != 0 ) |
145 | { | 145 | { |
146 | QString fs = me->mnt_fsname; | 146 | QString fs = me->mnt_fsname; |
147 | if ( fs.left(7)=="/dev/hd" || fs.left(7)=="/dev/sd" | 147 | if ( fs.left(7)=="/dev/hd" || fs.left(7)=="/dev/sd" |
148 | || fs.left(8)=="/dev/mtd" || fs.left(9) == "/dev/mmcd" | 148 | || fs.left(8)=="/dev/mtd" || fs.left(9) == "/dev/mmcd" |
149 | || fs.left( 14 ) == "/dev/mmc/part1" | 149 | || fs.left( 14 ) == "/dev/mmc/part1" |
150 | || fs.left(5)=="tmpfs" || fs.left(9)=="/dev/root" ) | 150 | || fs.left(5)=="tmpfs" || fs.left(9)=="/dev/root" ) |
151 | { | 151 | { |
152 | n++; | 152 | n++; |
153 | curdisks.append(fs); | 153 | curdisks.append(fs); |
154 | curopts.append( me->mnt_opts ); | 154 | curopts.append( me->mnt_opts ); |
155 | //qDebug("-->fs %s opts %s", fs.latin1(), me->mnt_opts ); | 155 | //qDebug("-->fs %s opts %s", fs.latin1(), me->mnt_opts ); |
156 | curfs.append( me->mnt_dir ); | 156 | curfs.append( me->mnt_dir ); |
157 | bool found = FALSE; | 157 | bool found = FALSE; |
158 | for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) | 158 | for (QListIterator<FileSystem> i(mFileSystems); i.current(); ++i) |
159 | { | 159 | { |
160 | if ( (*i)->disk() == fs ) | 160 | if ( (*i)->disk() == fs ) |
161 | { | 161 | { |
162 | found = TRUE; | 162 | found = TRUE; |
163 | break; | 163 | break; |
164 | } | 164 | } |
165 | } | 165 | } |
166 | if ( !found ) | 166 | if ( !found ) |
167 | rebuild = TRUE; | 167 | rebuild = TRUE; |
168 | } | 168 | } |
169 | } | 169 | } |
170 | endmntent( mntfp ); | 170 | endmntent( mntfp ); |
171 | } | 171 | } |
172 | if ( rebuild || n != (int)mFileSystems.count() ) | 172 | if ( rebuild || n != (int)mFileSystems.count() ) |
173 | { | 173 | { |
174 | mFileSystems.clear(); | 174 | mFileSystems.clear(); |
175 | QStringList::ConstIterator it=curdisks.begin(); | 175 | QStringList::ConstIterator it=curdisks.begin(); |
176 | QStringList::ConstIterator fsit=curfs.begin(); | 176 | QStringList::ConstIterator fsit=curfs.begin(); |
177 | QStringList::ConstIterator optsIt=curopts.begin(); | 177 | QStringList::ConstIterator optsIt=curopts.begin(); |
178 | for (; it!=curdisks.end(); ++it, ++fsit, ++optsIt) | 178 | for (; it!=curdisks.end(); ++it, ++fsit, ++optsIt) |
179 | { | 179 | { |
180 | QString opts = *optsIt; | 180 | QString opts = *optsIt; |
181 | 181 | ||
182 | QString disk = *it; | 182 | QString disk = *it; |
183 | QString humanname; | 183 | QString humanname; |
184 | bool removable = FALSE; | 184 | bool removable = FALSE; |
185 | if ( isCF(disk) ) | 185 | if ( isCF(disk) ) |
186 | { | 186 | { |
187 | humanname = tr("CF Card"); | 187 | humanname = tr("CF Card"); |
188 | removable = TRUE; | 188 | removable = TRUE; |
189 | } | 189 | } |
190 | else if ( disk == "/dev/hda1" ) | 190 | else if ( disk == "/dev/hda1" ) |
191 | { | 191 | { |
192 | humanname = tr("Hard Disk"); | 192 | humanname = tr("Hard Disk"); |
193 | } | 193 | } |
194 | else if ( disk.left(9) == "/dev/mmcd" ) | 194 | else if ( disk.left(9) == "/dev/mmcd" ) |
195 | { | 195 | { |