Versión 1.0.4, #526: Soporte para clientes con varios discos.

git-svn-id: https://opengnsys.es/svn/branches/version1.0@3121 a21b9725-9963-47de-94b9-378ad31fedc9
master
ramon 2012-06-01 11:38:49 +00:00
parent 6fc28cdc46
commit 99f74d8114
1 changed files with 22 additions and 26 deletions

View File

@ -707,22 +707,25 @@ BOOLEAN actualizaConfiguracion(Database db, Table tbl, char* cfg, int ido)
{ {
char msglog[LONSTD], sqlstr[LONSQL]; char msglog[LONSTD], sqlstr[LONSQL];
int lon, p, c, i, dato, swu, idsoi, idsfi,k; int lon, p, c, i, dato, swu, idsoi, idsfi,k;
char *ptrPar[MAXPAR], *ptrCfg[5], *ptrDual[2], tbPar[LONSTD]; char *ptrPar[MAXPAR], *ptrCfg[6], *ptrDual[2], tbPar[LONSTD];
char *par, *cpt, *sfi, *soi, *tam; // Parametros que definen una partición char *disk, *par, *cpt, *sfi, *soi, *tam; // Parametros que definen una partición
char modulo[] = "actualizaConfiguracion()"; char modulo[] = "actualizaConfiguracion()";
lon = sprintf(tbPar, "("); lon = sprintf(tbPar, "(");
p = splitCadena(ptrPar, cfg, '\n'); p = splitCadena(ptrPar, cfg, '\n');
for (i = 0; i < p; i++) { for (i = 0; i < p; i++) {
c = splitCadena(ptrCfg, ptrPar[i], '\t'); c = splitCadena(ptrCfg, ptrPar[i], '\t');
par = cpt = sfi = soi = tam = NULL; disk = par = cpt = sfi = soi = tam = NULL;
splitCadena(ptrDual, ptrCfg[0], '='); splitCadena(ptrDual, ptrCfg[0], '=');
par = ptrDual[1]; // Número de partición disk = ptrDual[1]; // Número de disco
splitCadena(ptrDual, ptrCfg[1], '='); splitCadena(ptrDual, ptrCfg[1], '=');
par = ptrDual[1]; // Número de partición
splitCadena(ptrDual, ptrCfg[2], '=');
cpt = ptrDual[1]; // Código de partición cpt = ptrDual[1]; // Código de partición
k=splitCadena(ptrDual, ptrCfg[2], '='); k=splitCadena(ptrDual, ptrCfg[3], '=');
if(k==2){ if(k==2){
sfi = ptrDual[1]; // Sistema de ficheros sfi = ptrDual[1]; // Sistema de ficheros
/* Comprueba existencia del sistema de ficheros instalado */ /* Comprueba existencia del sistema de ficheros instalado */
@ -731,7 +734,7 @@ BOOLEAN actualizaConfiguracion(Database db, Table tbl, char* cfg, int ido)
else else
idsfi=0; idsfi=0;
k=splitCadena(ptrDual, ptrCfg[3], '='); k=splitCadena(ptrDual, ptrCfg[4], '=');
if(k==2){ // Sistema operativo detecdtado if(k==2){ // Sistema operativo detecdtado
soi = ptrDual[1]; // Nombre del S.O. instalado soi = ptrDual[1]; // Nombre del S.O. instalado
/* Comprueba existencia del sistema operativo instalado */ /* Comprueba existencia del sistema operativo instalado */
@ -740,16 +743,14 @@ BOOLEAN actualizaConfiguracion(Database db, Table tbl, char* cfg, int ido)
else else
idsoi=0; idsoi=0;
splitCadena(ptrDual, ptrCfg[4], '='); splitCadena(ptrDual, ptrCfg[5], '=');
tam = ptrDual[1]; // Tamaño de la partición tam = ptrDual[1]; // Tamaño de la partición
lon += sprintf(tbPar + lon, "%s,", par); lon += sprintf(tbPar + lon, "%s,", par);
sprintf( sprintf(sqlstr, "SELECT numdisk,numpar,codpar,tamano,idsistemafichero,idnombreso"
sqlstr, " FROM ordenadores_particiones WHERE idordenador=%d AND numdisk=%s AND numpar=%s",
"SELECT numpar,codpar,tamano,idsistemafichero,idnombreso" ido, disk, par);
" FROM ordenadores_particiones WHERE idordenador=%d AND numpar=%s",
ido, par);
if (!db.Execute(sqlstr, tbl)) { // Error al recuperar los datos if (!db.Execute(sqlstr, tbl)) { // Error al recuperar los datos
errorLog(modulo, 21, FALSE); errorLog(modulo, 21, FALSE);
db.GetErrorErrStr(msglog); db.GetErrorErrStr(msglog);
@ -757,12 +758,10 @@ BOOLEAN actualizaConfiguracion(Database db, Table tbl, char* cfg, int ido)
return (FALSE); return (FALSE);
} }
if (tbl.ISEOF()) { // Si no existe el registro if (tbl.ISEOF()) { // Si no existe el registro
sprintf( sprintf(sqlstr, "INSERT INTO ordenadores_particiones(idordenador,numdisk,numpar,codpar,tamano,idsistemafichero,idnombreso,idimagen)"
sqlstr, " VALUES(%d,%s,%s,0x%s,%s,%d,%d,0)",
"INSERT INTO ordenadores_particiones(idordenador,numpar,codpar,tamano,idsistemafichero,idnombreso,idimagen)" ido, disk, par, cpt, tam, idsfi, idsoi);
" VALUES(%d,%s,0x%s,%s,%d,%d,0)", ido, par, cpt, tam, errorInfo(modulo,sqlstr);
idsfi, idsoi);
if (!db.Execute(sqlstr, tbl)) { // Error al insertar if (!db.Execute(sqlstr, tbl)) { // Error al insertar
db.GetErrorErrStr(msglog); db.GetErrorErrStr(msglog);
errorInfo(modulo, msglog); errorInfo(modulo, msglog);
@ -807,10 +806,9 @@ BOOLEAN actualizaConfiguracion(Database db, Table tbl, char* cfg, int ido)
" idnombreso=%d," " idnombreso=%d,"
" idimagen=%d," " idimagen=%d,"
" idperfilsoft=%d" " idperfilsoft=%d"
" WHERE idordenador=%d AND numpar=%s"\ " WHERE idordenador=%d AND numdisk=%s AND numpar=%s",
, cpt, tam, idsfi, cpt, tam, idsfi, idsoi, 0, 0, ido, disk, par);
idsoi, 0, 0, ido, par); errorInfo(modulo,sqlstr);
if (!db.Execute(sqlstr, tbl)) { // Error al recuperar los datos if (!db.Execute(sqlstr, tbl)) { // Error al recuperar los datos
errorLog(modulo, 21, FALSE); errorLog(modulo, 21, FALSE);
db.GetErrorErrStr(msglog); db.GetErrorErrStr(msglog);
@ -822,10 +820,8 @@ BOOLEAN actualizaConfiguracion(Database db, Table tbl, char* cfg, int ido)
} }
lon += sprintf(tbPar + lon, "%d)", 0); lon += sprintf(tbPar + lon, "%d)", 0);
// Eliminar particiones almacenadas que ya no existen // Eliminar particiones almacenadas que ya no existen
sprintf( sprintf(sqlstr, "DELETE FROM ordenadores_particiones WHERE idordenador=%d AND numdisk=%s AND numpar NOT IN %s",
sqlstr, ido, disk, tbPar);
"DELETE FROM ordenadores_particiones WHERE idordenador=%d AND numpar NOT IN %s",
ido, tbPar);
if (!db.Execute(sqlstr, tbl)) { // Error al recuperar los datos if (!db.Execute(sqlstr, tbl)) { // Error al recuperar los datos
errorLog(modulo, 21, FALSE); errorLog(modulo, 21, FALSE);
db.GetErrorErrStr(msglog); db.GetErrorErrStr(msglog);