ernesto logo
Torna al Magazine
Cancellazione dati: come trovare centri riparazione computer
consigli
Cancellazione dati: come trovare centri riparazione computer

Come Trovare Centri di Riparazione per la Cancellazione dei Dati sui Computer.

Trovare un Centro di Assistenza per la Cancellazione Sicura dei Dati sui Computer.

Scopri come trovare i migliori centri di riparazione per la cancellazione dei dati sui computer. Questo articolo offre consigli utili e strategie per scegliere il servizio giusto, garantendo la sicurezza delle tue informazioni. Non lasciare nulla al caso, leggi ora per fare la scelta migliore!

Trova professionisti vicino a te

Trova professionisti
/* * Copyright (c) 2007-2009, Novell Inc. * * This program is licensed under the BSD license, read LICENSE.BSD * for further information */ #include #include #include #include #include #include #include #include "pool.h" #include "poolarch.h" #include "poolvendor.h" #include "repo_solv.h" #include "common_write.h" #include "repo_rpmmd.h" struct rpmmd_solv_data { Repo *repo; Solvable *solvable; Repodata *data; char *lang; Id handle; Queue dirq; int isprimary; int flags; int done; int depth; int intag; /* 1: filelist 2: changelog 3: other tags */ int inprimary; int filelistextend; int filesizecount; char *filesizechecksum; Id filesizeid; int filedigestcount; char *filedigestchecksum; Id filedigestid; Id tagid; /* tagid of tag we are in */ Id dircache; /* id of dircache string */ char dircachebuf[PATH_MAX]; /* buffer for dircache string */ int dircachelen; /* length of dircache string */ char *lastdir; /* last dir name (for dircache) */ char *lastlang; /* last lang name (for changelog) */ }; struct rpmmd_solv_dir { char *name; int namel; int nsubs; struct rpmmd_solv_dir *subs; }; struct rpmmd_solv_dircache { struct rpmmd_solv_dir *dir; }; static void rpmmd_end(struct rpmmd_solv_data *data, const char *name) { if (data->intag == 1) { if (!strcmp(name, "file") && data->filesizecount && data->filedigestcount) { data->filesizecount = 0; data->filedigestcount = 0; repodata_set_num(data->data, data->solvable - data->repo->pool->solvables, SOLVABLE_DISKUSAGE, data->filesizeid); if (data->filedigestid) repodata_set_id(data->data, data->solvable - data->repo->pool->solvables, SOLVABLE_CHECKSUM, data->filedigestid); data->filesizeid = 0; data->filedigestid = 0; if (data->filesizechecksum) { free(data->filesizechecksum); data->filesizechecksum = 0; } if (data->filedigestchecksum) { free(data->filedigestchecksum); data->filedigestchecksum = 0; } } else if (!strcmp(name, "filelist")) { if (data->dircache) { if (data->filelistextend) repodata_set_id(data->data, data->solvable - data->repo->pool->solvables, SOLVABLE_FILELIST, data->dircache); else repodata_set_id(data->data, data->solvable - data->repo->pool->solvables, SOLVABLE_FILELIST_DIRS, data->dircache); data->dircache = 0; } data->filelistextend = 0; } else if (!strcmp(name, "changelog")) { if (data->lang) { repodata_set_str(data->data, data->solvable - data->repo->pool->solvables, SOLVABLE_CHANGELOG_AUTHOR, data->lang); repodata_set_str(data->data, data->solvable - data->repo->pool->solvables, SOLVABLE_CHANGELOG_TEXT, data->lang); free(data->lang); data->lang = 0; data->lastlang = 0; } } data->intag = 0; } else if (data->intag == 2) { if (!strcmp(name, "text")) { if (data->lang) { if (data->lastlang) { Repodata *lndata; lndata = repodata_new_handle(data->data, data->handle); repodata_set_str(lndata, data->solvable - data->repo->pool->solvables, SOLVABLE_CHANGELOG_TEXT, data->lang); repodata_set_str(lndata, data->solvable - data->repo->pool->solvables, SOLVABLE_CHANGELOG_AUTHOR, data->lastlang); repodata_free_handle(lndata, data->handle++); free(data->lang); free(data->lastlang); data->lang = 0; data->lastlang = 0; } } } data->intag = 0; } else if (data->intag == 3) { if (!strcmp(name, "prestoinfo")) { if (data->lang) { repodata_set_str(data->data, data->solvable - data->repo->pool->solvables, SOLVABLE_PRESTOINFO, data->lang); free(data->lang); data->lang = 0; } } data->intag = 0; } else if (data->intag) { data->intag = 0; } else { if (!strcmp(name, "package")) { if (data->dircache) { if (data->filelistextend) repodata_set_id(data->data, data->solvable - data->repo->pool->solvables, SOLVABLE_FILELIST, data->dircache); else repodata_set_id(data->data, data->solvable - data->repo->pool->solvables, SOLVABLE_FILELIST_DIRS, data->dircache); data->dircache = 0; } data->filelistextend = 0; data->done = 1; } else if (!strcmp(name, "primary")) { Queue q; int i; if (data->isprimary && !data->inprimary && data->repo->nsolvables) { queue_init(&q); for (i = 0; i < data->dirq.count; i += 3) queue_push2(&q, data->dirq.elements[i], data->dirq.elements[i + 1]); repodata_set_dirs(data->data, data->repo->nsolvables - 1, SOLVABLE_FILELIST, &q); queue_free(&q); } queue_free(&data->dirq); data->inprimary = 0; } else if (!strcmp(name, "rpmmd")) { data->done = 1; } } data->depth--; } static void rpmmd_start(void *vdata, const char *name, const char **atts) { struct rpmmd_solv_data *data = vdata; const char *lang; const char *id; const char *v; int i; if (data->done) return; if (!strcmp(name, "package")) { data->solvable = solvable_create(data->repo, 0); if (data->isprimary) { data->data = repo_add_repodata(data->repo, 0); data->handle = data->data->start; queue_init(&data->dirq); } for (i = 0; atts[i]; i += 2) { if (!strcmp(atts[i], "name")) { solvable_set_str(data->solvable, SOLVABLE_NAME, pool_tmpjoin(data->repo->pool, atts[i + 1], 0, 0)); continue; } if (!strcmp(atts[i], "version")) { solvable_set_str(data->solvable, SOLVABLE_VERSION, pool_tmpjoin(data->repo->pool, atts[i + 1], 0, 0)); continue; } if (!strcmp(atts[i], "release")) { solvable_set_str(data->solvable, SOLVABLE_RELEASE, pool_tmpjoin(data->repo->pool, atts[i + 1], 0, 0)); continue; } if (!strcmp(atts[i], "arch")) { int a = pool_str2id(data->repo->pool, atts[i + 1], 1); if (a && a != ARCH_SRC && a != ARCH_NOSRC) solvable_set_arch(data->solvable, a); continue; } if (!strcmp(atts[i], "vendor")) { int v = pool_str2id(data->repo->pool, atts[i + 1], 1); if (v) solvable_set_vendor(data->solvable, v); continue; } } } else if (!strcmp(name, "primary")) { data->inprimary = 1; } else if (!strcmp(name, "file")) { for (i = 0; atts[i]; i += 2) { if (!strcmp(atts[i], "type") && !strcmp(atts[i + 1], "dir")) { data->filesizecount = 0; data->filedigestcount = 0; break; } if (!strcmp(atts[i], "lang")) { if (!strcmp(atts[i + 1], "C")) lang = 0; else lang = atts[i + 1]; if (data->lastdir || data->lastlang != lang || data->dirq.count == 0) { if (data->dirq.count && data->dirq.elements[data->dirq.count - 1]) { data->dirq.count++; queue_push2(&data->dirq, 0, 0); } data->lastlang = lang; id = pool_tmpjoin(data->repo->pool, data->lastdir ? data->lastdir : "", lang ? lang : "", 0); i = pool_str2id(data->repo->pool, id, 1); if (data->dircache) { data->dircachebuf[data->dircachelen] = 0; repodata_set_str(data->data, data->solvable - data->repo->pool->solvables, data->dircache, data->dircachebuf); data->dircache = 0; } data->dircache = repodata_new_handle(data->data, data->handle); data->dircachelen = 0; queue_push2(&data->dirq, i, 0); } } else if (!strcmp(atts[i], "name")) { data->lastdir = atts[i + 1]; if (data->dircache && !(data->flags & REPO_EXTEND_FILELISTS)) { data->dircachebuf[data->dircachelen] = 0; repodata_set_str(data->data, data->solvable - data->repo->pool->solvables, data->dircache, data->dircachebuf); data->dircache = 0; } if (data->flags & REPO_EXTEND_FILELISTS) { int l = strlen(atts[i + 1]); if (data->dircachelen + l + 1 >= sizeof(data->dircachebuf)) { id = pool_tmpjoin(data->repo->pool, data->dircachebuf, 0, 0); i = pool_str2id(data->repo->pool, id, 1); if (data->dircache) repodata_set_str(data->data, data->solvable - data->repo->pool->solvables, data->dircache, data->dircachebuf); data->dircache = repodata_new_handle(data->data, data->handle); data->dircachelen = 0; queue_push2(&data->dirq, i, 0); } if (data->dircachelen) data->dircachebuf[data->dircachelen++] = '/'; strcpy(data->dircachebuf + data->dircachelen, atts[i + 1]); data->dircachelen += l; } } } data->intag = 1; } else if (!strcmp(name, "format")) { v = 0; lang = 0; for (i = 0; atts[i]; i += 2) { if (!strcmp(atts[i], "type") && !strcmp(atts[i + 1], "rpm")) v = atts[i + 1]; else if (!strcmp(atts[i], "lang")) { if (!strcmp(atts[i + 1], "C")) lang = 0; else lang = atts[i + 1]; } } if (v) repodata_set_poolstr(data->data, data->solvable - data->repo->pool->solvables, SOLVABLE_MEDIA, v); if (lang) repodata_set_poolstr(data->data, data->solvable - data->repo->pool->solvables, SOLVABLE_LOCATION_SUBDIR, lang); } else if (!strcmp(name, "filelist")) { data->intag = 1; data->filelistextend = 0; for (i = 0; atts[i]; i += 2) { if (!str
Ultimo aggiornamento
30 Mar 2025
Articoli consigliati
Come Trovare Centri di Riparazione per la Cancellazione dei Dati sui Computer.
consigli
Come Trovare Centri di Riparazione per la Cancellazione dei Dati sui Computer.
Centri di Riparazione Computer per Assistenza Informatica Rapida ed Efficace.
consigli
Centri di Riparazione Computer per Assistenza Informatica Rapida ed Efficace.
Trovare i Migliori Centri Riparazione Computer su Ernesto.it.
guida
Trovare i Migliori Centri Riparazione Computer su Ernesto.it.
Come Trovare un Centro di Riparazione per lo Schermo di un iPhone
consigli
Come Trovare un Centro di Riparazione per lo Schermo di un iPhone
Come Trovare un Ingegnere Informatico o un Tecnico per il Recupero dei Dati.
consigli
Come Trovare un Ingegnere Informatico o un Tecnico per il Recupero dei Dati.
Come Trovare un Centro di Riparazione per Telefoni e Tablet.
consigli
Come Trovare un Centro di Riparazione per Telefoni e Tablet.
Come Trovare Tecnici per Riparazioni di Computer Apple
consigli
Come Trovare Tecnici per Riparazioni di Computer Apple
Sicurezza Digitale: Cancellazione Dati Essenziale
sicurezza digitale,cancellazione dati,privacy
Sicurezza Digitale: Cancellazione Dati Essenziale
Trovare i Migliori Centri di Riparazione Telefoni su Ernesto.it.
guida
Trovare i Migliori Centri di Riparazione Telefoni su Ernesto.it.
Come Trovare un Centro di Assistenza per la Riparazione degli Elettrodomestici.
consigli
Come Trovare un Centro di Assistenza per la Riparazione degli Elettrodomestici.
Come Trovare un Tecnico per la Riparazione del Computer.
consigli
Come Trovare un Tecnico per la Riparazione del Computer.
Come Trovare Centri Assistenza per la Riparazione di Stampanti Elettrodomestici.
consigli
Come Trovare Centri Assistenza per la Riparazione di Stampanti Elettrodomestici.
Ripara il Tuo Smartphone con i Migliori Tecnici Disponibili nei Centri di Riparazione Telefoni.
consigli
Ripara il Tuo Smartphone con i Migliori Tecnici Disponibili nei Centri di Riparazione Telefoni.
Come Trovare Centri di Assistenza per Piccola Manutenzione di Elettrodomestici
consigli
Come Trovare Centri di Assistenza per Piccola Manutenzione di Elettrodomestici
Come Trovare Tecnici di Computer per l'Assistenza sulla Connessione Internet
consigli
Come Trovare Tecnici di Computer per l'Assistenza sulla Connessione Internet
Come Riparare un Computer Lento: Trovare i Migliori Tecnici Online su Ernesto.it
consigli
Come Riparare un Computer Lento: Trovare i Migliori Tecnici Online su Ernesto.it
Trovare un Centro Assistenza Elettrodomestici su Ernesto.it: I Migliori Centri di Assistenza.
guida
Trovare un Centro Assistenza Elettrodomestici su Ernesto.it: I Migliori Centri di Assistenza.
Fai Riparare e Mantenere il tuo Computer con i Nostri Tecnici.
consigli
Fai Riparare e Mantenere il tuo Computer con i Nostri Tecnici.
Guida Completa alla Riparazione dei Computer Apple
fai da te
Guida Completa alla Riparazione dei Computer Apple
Trovare un Centro Assistenza Elettrodomestici su Ernesto.it: Il Sito per Trovare i Migliori Riparatori di Elettrodomestici.
guida
Trovare un Centro Assistenza Elettrodomestici su Ernesto.it: Il Sito per Trovare i Migliori Riparatori di Elettrodomestici.