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

Function session_save

src/sessionp.c:200–372  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

198}
199
200int session_save(const alloc_data_t *list_free_space, const struct ph_param *params, const struct ph_options *options)
201{
202 FILE *f_session;
203 if(params->status==STATUS_QUIT)
204 return 0;
205 f_session=fopen(SESSION_FILENAME,"wb");
206 if(!f_session)
207 {
208#ifndef DISABLED_FOR_FRAMAC
209 log_critical("Can't create photorec.ses file: %s\n",strerror(errno));
210#endif
211 /*@ assert \valid_read(list_free_space); */
212 /*@ assert valid_ph_param(params); */
213 /*@ assert \valid_read(options); */
214 return -1;
215 }
216#ifndef DISABLED_FOR_FRAMAC
217 {
218 struct td_list_head *free_walker = NULL;
219 unsigned int i;
220 const file_enable_t *files_enable=options->list_file_format;
221 unsigned int disable=0;
222 unsigned int enable=0;
223 unsigned int enable_by_default=0;
224 if(options->verbose>1)
225 {
226 log_trace("session_save\n");
227 }
228 fprintf(f_session,"#%lu\n%s %s,%u,",
229 (unsigned long int)time(NULL), params->disk->device, params->disk->arch->part_name_option, params->partition->order);
230 if(params->blocksize>0)
231 fprintf(f_session,"blocksize,%u,", params->blocksize);
232 fprintf(f_session,"fileopt,");
233 /*@
234 @ loop assigns i, disable, enable, enable_by_default;
235 @*/
236 for(i=0;files_enable[i].file_hint!=NULL;i++)
237 {
238 if(files_enable[i].enable==0)
239 disable++;
240 else
241 enable++;
242 if(files_enable[i].enable==files_enable[i].file_hint->enable_by_default)
243 enable_by_default++;
244 }
245 if(enable_by_default >= disable && enable_by_default >= enable)
246 {
247 for(i=0;files_enable[i].file_hint!=NULL;i++)
248 {
249 if(files_enable[i].enable!=files_enable[i].file_hint->enable_by_default &&
250 files_enable[i].file_hint->extension!=NULL &&
251 files_enable[i].file_hint->extension[0]!='\0')
252 {
253 fprintf(f_session,"%s,%s,", files_enable[i].file_hint->extension,
254 (files_enable[i].enable!=0?"enable":"disable"));
255 }
256 }
257 }

Callers 3

photorecFunction · 0.85
regular_session_saveFunction · 0.85
photorecMethod · 0.85

Calls 2

MALLOCFunction · 0.85
td_list_for_eachFunction · 0.70

Tested by

no test coverage detected