-rw-r--r-- | libopie2/opiecore/linux/opcmciasystem.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/libopie2/opiecore/linux/opcmciasystem.cpp b/libopie2/opiecore/linux/opcmciasystem.cpp index 054d261..eae356e 100644 --- a/libopie2/opiecore/linux/opcmciasystem.cpp +++ b/libopie2/opiecore/linux/opcmciasystem.cpp | |||
@@ -65,65 +65,68 @@ OPcmciaSystem::OPcmciaSystem() | |||
65 | // get major node number out of /proc/devices | 65 | // get major node number out of /proc/devices |
66 | QFile procfile( PROC_DEVICES ); | 66 | QFile procfile( PROC_DEVICES ); |
67 | if ( procfile.exists() && procfile.open( IO_ReadOnly ) ) | 67 | if ( procfile.exists() && procfile.open( IO_ReadOnly ) ) |
68 | { | 68 | { |
69 | QTextStream devstream( &procfile ); | 69 | QTextStream devstream( &procfile ); |
70 | devstream.readLine(); // skip header | 70 | devstream.readLine(); // skip header |
71 | while ( !devstream.atEnd() && !_major ) | 71 | while ( !devstream.atEnd() && !_major ) |
72 | { | 72 | { |
73 | int nodenumber; | 73 | int nodenumber; |
74 | QString driver; | 74 | QString driver; |
75 | devstream >> nodenumber >> driver; | 75 | devstream >> nodenumber >> driver; |
76 | if ( driver == "pcmcia" ) | 76 | if ( driver == "pcmcia" ) |
77 | { | 77 | { |
78 | qDebug( "OPcmciaSystem::OPcmciaSystem(): gotcha! pcmcia node number = %d", nodenumber ); | 78 | qDebug( "OPcmciaSystem::OPcmciaSystem(): gotcha! pcmcia node number = %d", nodenumber ); |
79 | _major = nodenumber; | 79 | _major = nodenumber; |
80 | break; | 80 | break; |
81 | } | 81 | } |
82 | } | 82 | } |
83 | } | 83 | } |
84 | else | 84 | else |
85 | { | 85 | { |
86 | qWarning( "OPcmciaSystem::OPcmciaSystem() - can't open /proc/devices - continuing with limited functionality." ); | 86 | qWarning( "OPcmciaSystem::OPcmciaSystem() - can't open /proc/devices - continuing with limited functionality." ); |
87 | } | 87 | } |
88 | 88 | ||
89 | synchronize(); | 89 | synchronize(); |
90 | } | 90 | } |
91 | 91 | ||
92 | void OPcmciaSystem::synchronize() | 92 | void OPcmciaSystem::synchronize() |
93 | { | 93 | { |
94 | qDebug( "OPcmciaSystem::synchronize()" ); | 94 | qDebug( "OPcmciaSystem::synchronize()" ); |
95 | _interfaces.clear(); | 95 | _interfaces.clear(); |
96 | 96 | ||
97 | //FIXME: Use cardmgr subsystem ioctls | 97 | //NOTE: We _could_ use ioctl's here as well, however we want to know if |
98 | // the card is recognized by the cardmgr (hence has a valid binding) | ||
99 | // If it is not recognized yet, userland may want to provide a configuration dialog | ||
100 | //TODO: Revise for pcmciautils | ||
98 | 101 | ||
99 | QString fileName; | 102 | QString fileName; |
100 | if ( QFile::exists( "/var/run/stab" ) ) { fileName = "/var/run/stab"; } | 103 | if ( QFile::exists( "/var/run/stab" ) ) { fileName = "/var/run/stab"; } |
101 | else if ( QFile::exists( "/var/state/pcmcia/stab" ) ) { fileName = "/var/state/pcmcia/stab"; } | 104 | else if ( QFile::exists( "/var/state/pcmcia/stab" ) ) { fileName = "/var/state/pcmcia/stab"; } |
102 | else { fileName = "/var/lib/pcmcia/stab"; } | 105 | else { fileName = "/var/lib/pcmcia/stab"; } |
103 | QFile cardinfofile( fileName ); | 106 | QFile cardinfofile( fileName ); |
104 | if ( !cardinfofile.exists() || !cardinfofile.open( IO_ReadOnly ) ) | 107 | if ( !cardinfofile.exists() || !cardinfofile.open( IO_ReadOnly ) ) |
105 | { | 108 | { |
106 | qWarning( "pcmcia info file not found or unaccessible" ); | 109 | qWarning( "pcmcia info file not found or unaccessible" ); |
107 | return; | 110 | return; |
108 | } | 111 | } |
109 | QTextStream cardinfo( &cardinfofile ); | 112 | QTextStream cardinfo( &cardinfofile ); |
110 | while ( !cardinfo.atEnd() ) | 113 | while ( !cardinfo.atEnd() ) |
111 | { | 114 | { |
112 | QString strSocket; | 115 | QString strSocket; |
113 | int numSocket; | 116 | int numSocket; |
114 | char colon; | 117 | char colon; |
115 | QString cardName; | 118 | QString cardName; |
116 | cardinfo >> strSocket >> numSocket >> colon; | 119 | cardinfo >> strSocket >> numSocket >> colon; |
117 | cardName = cardinfo.readLine().stripWhiteSpace(); | 120 | cardName = cardinfo.readLine().stripWhiteSpace(); |
118 | qDebug( "strSocket = '%s', numSocket = '%d', colon = '%c', cardName = '%s'", (const char*) strSocket, numSocket, colon, ( const char*) cardName ); | 121 | qDebug( "strSocket = '%s', numSocket = '%d', colon = '%c', cardName = '%s'", (const char*) strSocket, numSocket, colon, ( const char*) cardName ); |
119 | if ( strSocket == "Socket" && colon == ':' ) | 122 | if ( strSocket == "Socket" && colon == ':' ) |
120 | { | 123 | { |
121 | _interfaces.append( new OPcmciaSocket( _major, numSocket, this, (const char*) cardName ) ); | 124 | _interfaces.append( new OPcmciaSocket( _major, numSocket, this, (const char*) cardName ) ); |
122 | } | 125 | } |
123 | else | 126 | else |
124 | { | 127 | { |
125 | continue; | 128 | continue; |
126 | } | 129 | } |
127 | } | 130 | } |
128 | } | 131 | } |
129 | 132 | ||