MCPcopy Create free account
hub / github.com/cgsecurity/testdisk / partition_load

Function partition_load

src/savehdr.c:93–203  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

91}
92
93backup_disk_t *partition_load(const disk_t *disk_car, const int verbose)
94{
95 FILE *f_backup;
96 char *buffer;
97 char *pos=NULL;
98 int taille;
99 backup_disk_t *new_backup=NULL;
100 backup_disk_t *list_backup;
101 list_backup=(backup_disk_t*)MALLOC(sizeof(*list_backup));
102 list_backup->list.prev= &list_backup->list;
103 list_backup->list.next = &list_backup->list;
104
105 if(verbose>1)
106 {
107 log_trace("partition_load\n");
108 }
109 f_backup=fopen("backup.log","r");
110 if(!f_backup)
111 {
112 log_error("Can't open backup.log file: %s\n",strerror(errno));
113 return list_backup;
114 }
115 buffer=(char *)MALLOC(BACKUP_MAXSIZE);
116 taille=fread(buffer,1,BACKUP_MAXSIZE,f_backup);
117 buffer[(taille<BACKUP_MAXSIZE?taille:BACKUP_MAXSIZE-1)]='\0';
118 if(verbose>1)
119 {
120 log_info("partition_load backup.log size=%d\n",taille);
121 }
122 for(pos=buffer;pos<buffer+taille;pos++)
123 {
124 if(*pos=='\n')
125 {
126 *pos='\0';
127 }
128 }
129 pos=buffer;
130 while(pos!=NULL && pos<buffer+taille)
131 {
132 if(*pos=='#')
133 {
134 pos++;
135 if(verbose>1)
136 {
137 log_verbose("new disk: %s\n",pos);
138 }
139 if(new_backup!=NULL)
140 td_list_add_tail(&new_backup->list,&list_backup->list);
141 new_backup=(backup_disk_t*)MALLOC(sizeof(*new_backup));
142 new_backup->description[0]='\0';
143 new_backup->list_part=NULL;
144 new_backup->my_time=strtol(pos,&pos,10);
145 if(pos!=NULL)
146 {
147 strncpy(new_backup->description,++pos,sizeof(new_backup->description));
148 new_backup->description[sizeof(new_backup->description)-1]='\0';
149 }
150 }

Callers 1

interface_loadFunction · 0.85

Calls 4

MALLOCFunction · 0.85
td_list_add_tailFunction · 0.85
partition_newFunction · 0.85
insert_new_partitionFunction · 0.85

Tested by

no test coverage detected