summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/aqpkg/datamgr.cpp53
1 files changed, 45 insertions, 8 deletions
diff --git a/noncore/settings/aqpkg/datamgr.cpp b/noncore/settings/aqpkg/datamgr.cpp
index b9ce227..b6e6e37 100644
--- a/noncore/settings/aqpkg/datamgr.cpp
+++ b/noncore/settings/aqpkg/datamgr.cpp
@@ -74,57 +74,79 @@ void DataManager :: loadServers()
74 QString ipkg_conf = IPKG_CONF; 74 QString ipkg_conf = IPKG_CONF;
75 FILE *fp; 75 FILE *fp;
76 fp = fopen( ipkg_conf, "r" ); 76 fp = fopen( ipkg_conf, "r" );
77 char line[130]; 77 char line[130];
78 QString lineStr; 78 QString lineStr;
79 if ( fp == NULL ) 79 if ( fp == NULL )
80 { 80 {
81 cout << "Couldn't open " << ipkg_conf << "! err = " << fp << endl; 81 cout << "Couldn't open " << ipkg_conf << "! err = " << fp << endl;
82 return; 82 return;
83 } 83 }
84 else 84 else
85 { 85 {
86 {
87 cout << "Before ipkg.conf read" << endl;
88 vector<Server>::iterator it;
89 for ( it = serverList.begin() ; it != serverList.end() ; ++it )
90 cout << "servername - " << it->getServerName() << endl;
91 }
92
86 while ( fgets( line, sizeof line, fp) != NULL ) 93 while ( fgets( line, sizeof line, fp) != NULL )
87 { 94 {
88 lineStr = line; 95 lineStr = line;
89 if ( lineStr.startsWith( "src" ) || lineStr.startsWith( "#src" ) ) 96 if ( lineStr.startsWith( "src" ) || lineStr.startsWith( "#src" ) || lineStr.startsWith( "# src" ) )
90 { 97 {
91 char alias[20]; 98 char alias[20];
92 char url[100]; 99 char url[100];
93 sscanf( lineStr, "%*[^ ] %s %s", alias, url ); 100
101
102 // Looks a little wierd but read up to the r of src (throwing it away),
103 // then read up to the next space and throw that away, the alias
104 // is next.
105 // Should Handle #src, # src, src, and combinations of
106 sscanf( lineStr, "%*[^r]%*[^ ] %s %s", alias, url );
107 cout << "Adding alias " << alias << " to list" << endl;
108 cout << lineStr << endl;
94 Server s( alias, url ); 109 Server s( alias, url );
95 serverList.push_back( s ); 110 serverList.push_back( s );
96 111
97 if ( lineStr.startsWith( "src" ) ) 112 if ( lineStr.startsWith( "src" ) )
98 setActiveServer( alias ); 113 setActiveServer( alias );
99 } 114 }
100 else if ( lineStr.startsWith( "dest" ) ) 115 else if ( lineStr.startsWith( "dest" ) )
101 { 116 {
102 char alias[20]; 117 char alias[20];
103 char path[50]; 118 char path[50];
104 sscanf( lineStr, "%*[^ ] %s %s", alias, path ); 119 sscanf( lineStr, "%*[^ ] %s %s", alias, path );
105 Destination d( alias, path ); 120 Destination d( alias, path );
106 destList.push_back( d ); 121 destList.push_back( d );
107 } 122 }
108 } 123 }
124 {
125 cout << "After ipkg.conf read" << endl;
126 vector<Server>::iterator it;
127 for ( it = serverList.begin() ; it != serverList.end() ; ++it )
128 cout << "servername - " << it->getServerName() << endl;
129 }
130
109 } 131 }
110 fclose( fp ); 132 fclose( fp );
111 133
112 // Go through the server destination list and add root, cf and card if they 134 // Go through the server destination list and add root, cf and card if they
113 // don't already exist 135 // don't already exist
114 /* AQ - commented out as if you don't have a CF or SD card in then 136/* AQ - commented out as if you don't have a CF or SD card in then
115 * this causes IPKG to try to create directories on non existant devices 137 * this causes IPKG to try to create directories on non existant devices
116 * (which of course fails), gives a nasty error message and can cause ipkg 138 * (which of course fails), gives a nasty error message and can cause ipkg
117 * to seg fault. 139 * to seg fault.
118 * 140 *
119 vector<Destination>::iterator dit; 141 vector<Destination>::iterator dit;
120 bool foundRoot = false; 142 bool foundRoot = false;
121 bool foundCF = false; 143 bool foundCF = false;
122 bool foundCard = false; 144 bool foundCard = false;
123 for ( dit = destList.begin() ; dit != destList.end() ; ++dit ) 145 for ( dit = destList.begin() ; dit != destList.end() ; ++dit )
124 { 146 {
125 if ( dit->getDestinationPath() == "/" ) 147 if ( dit->getDestinationPath() == "/" )
126 foundRoot = true; 148 foundRoot = true;
127 if ( dit->getDestinationPath() == "/mnt/cf" ) 149 if ( dit->getDestinationPath() == "/mnt/cf" )
128 foundCF = true; 150 foundCF = true;
129 if ( dit->getDestinationPath() == "/mnt/card" ) 151 if ( dit->getDestinationPath() == "/mnt/card" )
130 foundCard = true; 152 foundCard = true;
@@ -161,42 +183,57 @@ void DataManager :: reloadServerData( const char *serverName )
161 else if ( s->getServerName() == LOCAL_IPKGS ) 183 else if ( s->getServerName() == LOCAL_IPKGS )
162 s->readLocalIpks( getServer( LOCAL_SERVER ) ); 184 s->readLocalIpks( getServer( LOCAL_SERVER ) );
163 else 185 else
164 s->readPackageFile( getServer( LOCAL_SERVER ) ); 186 s->readPackageFile( getServer( LOCAL_SERVER ) );
165 187
166} 188}
167 189
168void DataManager :: writeOutIpkgConf() 190void DataManager :: writeOutIpkgConf()
169{ 191{
170 QString ipkg_conf = IPKG_CONF; 192 QString ipkg_conf = IPKG_CONF;
171 ofstream out( ipkg_conf ); 193 ofstream out( ipkg_conf );
172 194
173 out << "# Written by NetworkPackageManager Package Manager" << endl; 195 out << "# Written by AQPkg" << endl;
196 out << "# Must have one or more source entries of the form:" << endl;
197 out << "#" << endl;
198 out << "# src <src-name> <source-url>" << endl;
199 out << "#" << endl;
200 out << "# and one or more destination entries of the form:" << endl;
201 out << "#" << endl;
202 out << "# dest <dest-name> <target-path>" << endl;
203 out << "#" << endl;
204 out << "# where <src-name> and <dest-names> are identifiers that" << endl;
205 out << "# should match [a-zA-Z0-9._-]+, <source-url> should be a" << endl;
206 out << "# URL that points to a directory containing a Familiar" << endl;
207 out << "# Packages file, and <target-path> should be a directory" << endl;
208 out << "# that exists on the target system." << endl << endl;
174 209
175 // Write out servers 210 // Write out servers
176 vector<Server>::iterator it = serverList.begin(); 211 vector<Server>::iterator it = serverList.begin();
177 while ( it != serverList.end() ) 212 while ( it != serverList.end() )
178 { 213 {
179 QString alias = it->getServerName(); 214 QString alias = it->getServerName();
180 // Don't write out local as its a dummy 215 // Don't write out local as its a dummy
181 if ( alias != LOCAL_SERVER && alias != LOCAL_IPKGS ) 216 if ( alias != LOCAL_SERVER && alias != LOCAL_IPKGS )
182 { 217 {
183 QString url = it->getServerUrl();; 218 QString url = it->getServerUrl();;
184 219
185 if ( !activeServer || alias != activeServer ) 220 if ( !activeServer || alias != activeServer )
186 out << "#"; 221 out << "#";
187 out << "src " << alias << " " << url << endl; 222 out << "src " << alias << " " << url << endl;
188 } 223 }
189 224
190 it++; 225 it++;
191 } 226 }
192 227
228 out << endl;
229
193 // Write out destinations 230 // Write out destinations
194 vector<Destination>::iterator it2 = destList.begin(); 231 vector<Destination>::iterator it2 = destList.begin();
195 while ( it2 != destList.end() ) 232 while ( it2 != destList.end() )
196 { 233 {
197 out << "dest " << it2->getDestinationName() << " " << it2->getDestinationPath() << endl; 234 out << "dest " << it2->getDestinationName() << " " << it2->getDestinationPath() << endl;
198 it2++; 235 it2++;
199 } 236 }
200 237
201 out.close(); 238 out.close();
202} 239}