@@ -75,27 +75,27 @@ inline FILE *fopen(const char *filename, const char *mode)
75
75
__CPROVER_HIDE :;
76
76
(void )* filename ;
77
77
(void )* mode ;
78
- #ifdef __CPROVER_STRING_ABSTRACTION
78
+ #ifdef __CPROVER_STRING_ABSTRACTION
79
79
__CPROVER_assert (__CPROVER_is_zero_string (filename ), "fopen zero-termination of 1st argument" );
80
80
__CPROVER_assert (__CPROVER_is_zero_string (mode ), "fopen zero-termination of 2nd argument" );
81
- #endif
81
+ #endif
82
82
83
83
FILE * fopen_result ;
84
84
85
85
__CPROVER_bool fopen_error = __VERIFIER_nondet___CPROVER_bool ();
86
86
87
- #if !defined(__linux__ ) || defined(__GLIBC__ )
87
+ #if !defined(__linux__ ) || defined(__GLIBC__ )
88
88
fopen_result = fopen_error ?NULL :malloc (sizeof (FILE ));
89
- #else
89
+ #else
90
90
// libraries need to expose the definition of FILE; this is the
91
91
// case for musl
92
92
fopen_result = fopen_error ?NULL :malloc (sizeof (int ));
93
- #endif
93
+ #endif
94
94
95
- #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
95
+ #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
96
96
__CPROVER_set_must (fopen_result , "open" );
97
97
__CPROVER_cleanup (fopen_result , fclose_cleanup );
98
- #endif
98
+ #endif
99
99
100
100
return fopen_result ;
101
101
}
@@ -112,11 +112,11 @@ inline FILE* freopen(const char *filename, const char *mode, FILE *f)
112
112
__CPROVER_HIDE :;
113
113
(void )* filename ;
114
114
(void )* mode ;
115
- #if !defined(__linux__ ) || defined(__GLIBC__ )
115
+ #if !defined(__linux__ ) || defined(__GLIBC__ )
116
116
(void )* f ;
117
- #else
117
+ #else
118
118
(void )* (char * )f ;
119
- #endif
119
+ #endif
120
120
121
121
return f ;
122
122
}
@@ -137,13 +137,13 @@ int __VERIFIER_nondet_int();
137
137
138
138
inline int fclose (FILE * stream )
139
139
{
140
- __CPROVER_HIDE :;
141
- #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
140
+ __CPROVER_HIDE :;
141
+ #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
142
142
__CPROVER_assert (__CPROVER_get_must (stream , "open" ),
143
143
"fclose file must be open" );
144
144
__CPROVER_clear_must (stream , "open" );
145
145
__CPROVER_set_must (stream , "closed" );
146
- #endif
146
+ #endif
147
147
int return_value = __VERIFIER_nondet_int ();
148
148
free (stream );
149
149
return return_value ;
@@ -166,18 +166,18 @@ inline FILE *fdopen(int handle, const char *mode)
166
166
__CPROVER_HIDE :;
167
167
(void )handle ;
168
168
(void )* mode ;
169
- #ifdef __CPROVER_STRING_ABSTRACTION
169
+ #ifdef __CPROVER_STRING_ABSTRACTION
170
170
__CPROVER_assert (__CPROVER_is_zero_string (mode ),
171
171
"fdopen zero-termination of 2nd argument" );
172
- #endif
172
+ #endif
173
173
174
- #if !defined(__linux__ ) || defined(__GLIBC__ )
174
+ #if !defined(__linux__ ) || defined(__GLIBC__ )
175
175
FILE * f = malloc (sizeof (FILE ));
176
- #else
176
+ #else
177
177
// libraries need to expose the definition of FILE; this is the
178
178
// case for musl
179
179
FILE * f = malloc (sizeof (int ));
180
- #endif
180
+ #endif
181
181
182
182
return f ;
183
183
}
@@ -205,10 +205,10 @@ inline FILE *_fdopen(int handle, const char *mode)
205
205
__CPROVER_HIDE :;
206
206
(void )handle ;
207
207
(void )* mode ;
208
- #ifdef __CPROVER_STRING_ABSTRACTION
208
+ #ifdef __CPROVER_STRING_ABSTRACTION
209
209
__CPROVER_assert (__CPROVER_is_zero_string (mode ),
210
210
"fdopen zero-termination of 2nd argument" );
211
- #endif
211
+ #endif
212
212
213
213
FILE * f = malloc (sizeof (FILE ));
214
214
@@ -241,12 +241,12 @@ char *fgets(char *str, int size, FILE *stream)
241
241
#endif
242
242
}
243
243
244
- #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
244
+ #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
245
245
__CPROVER_assert (__CPROVER_get_must (stream , "open" ),
246
246
"fgets file must be open" );
247
- #endif
247
+ #endif
248
248
249
- #ifdef __CPROVER_STRING_ABSTRACTION
249
+ #ifdef __CPROVER_STRING_ABSTRACTION
250
250
int resulting_size ;
251
251
__CPROVER_assert (__CPROVER_buffer_size (str )>=size , "buffer-overflow in fgets" );
252
252
if (size > 0 )
@@ -255,7 +255,7 @@ char *fgets(char *str, int size, FILE *stream)
255
255
__CPROVER_is_zero_string (str )= !error ;
256
256
__CPROVER_zero_string_length (str )= resulting_size ;
257
257
}
258
- #else
258
+ #else
259
259
if (size > 0 )
260
260
{
261
261
int str_length = __VERIFIER_nondet_int ();
@@ -268,7 +268,7 @@ char *fgets(char *str, int size, FILE *stream)
268
268
if (!error )
269
269
str [str_length ]= '\0' ;
270
270
}
271
- #endif
271
+ #endif
272
272
273
273
return error ?0 :str ;
274
274
}
@@ -302,10 +302,10 @@ inline size_t fread(
302
302
#endif
303
303
}
304
304
305
- #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
305
+ #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
306
306
__CPROVER_assert (__CPROVER_get_must (stream , "open" ),
307
307
"fread file must be open" );
308
- #endif
308
+ #endif
309
309
310
310
for (size_t i = 0 ; i < bytes ; i ++ )
311
311
{
@@ -340,10 +340,10 @@ inline int feof(FILE *stream)
340
340
#endif
341
341
}
342
342
343
- #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
343
+ #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
344
344
__CPROVER_assert (__CPROVER_get_must (stream , "open" ),
345
345
"feof file must be open" );
346
- #endif
346
+ #endif
347
347
348
348
return return_value ;
349
349
}
@@ -372,10 +372,10 @@ inline int ferror(FILE *stream)
372
372
#endif
373
373
}
374
374
375
- #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
375
+ #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
376
376
__CPROVER_assert (__CPROVER_get_must (stream , "open" ),
377
377
"feof file must be open" );
378
- #endif
378
+ #endif
379
379
380
380
return return_value ;
381
381
}
@@ -402,16 +402,16 @@ __CPROVER_HIDE:;
402
402
403
403
int return_value = __VERIFIER_nondet_int ();
404
404
405
- #if !defined(__linux__ ) || defined(__GLIBC__ )
405
+ #if !defined(__linux__ ) || defined(__GLIBC__ )
406
406
(void )* stream ;
407
- #else
407
+ #else
408
408
(void )* (char * )stream ;
409
- #endif
409
+ #endif
410
410
411
- #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
411
+ #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
412
412
__CPROVER_assert (__CPROVER_get_must (stream , "open" ),
413
413
"fileno file must be open" );
414
- #endif
414
+ #endif
415
415
416
416
return return_value ;
417
417
}
@@ -430,9 +430,9 @@ inline int fputs(const char *s, FILE *stream)
430
430
// just return nondet
431
431
__CPROVER_HIDE :;
432
432
int return_value = __VERIFIER_nondet_int ();
433
- #ifdef __CPROVER_STRING_ABSTRACTION
433
+ #ifdef __CPROVER_STRING_ABSTRACTION
434
434
__CPROVER_assert (__CPROVER_is_zero_string (s ), "fputs zero-termination of 1st argument" );
435
- #endif
435
+ #endif
436
436
(void )* s ;
437
437
438
438
if (stream != stdout && stream != stderr )
@@ -444,10 +444,10 @@ inline int fputs(const char *s, FILE *stream)
444
444
#endif
445
445
}
446
446
447
- #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
447
+ #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
448
448
__CPROVER_assert (__CPROVER_get_must (stream , "open" ),
449
449
"fputs file must be open" );
450
- #endif
450
+ #endif
451
451
452
452
return return_value ;
453
453
}
@@ -468,11 +468,11 @@ inline int fflush(FILE *stream)
468
468
int return_value = __VERIFIER_nondet_int ();
469
469
(void )stream ;
470
470
471
- #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
471
+ #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
472
472
if (stream )
473
473
__CPROVER_assert (__CPROVER_get_must (stream , "open" ),
474
474
"fflush file must be open" );
475
- #endif
475
+ #endif
476
476
477
477
return return_value ;
478
478
}
@@ -501,10 +501,10 @@ inline int fpurge(FILE *stream)
501
501
#endif
502
502
}
503
503
504
- #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
504
+ #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
505
505
__CPROVER_assert (__CPROVER_get_must (stream , "open" ),
506
506
"fpurge file must be open" );
507
- #endif
507
+ #endif
508
508
509
509
return return_value ;
510
510
}
@@ -537,10 +537,10 @@ inline int fgetc(FILE *stream)
537
537
538
538
__CPROVER_input ("fgetc" , return_value );
539
539
540
- #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
540
+ #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
541
541
__CPROVER_assert (__CPROVER_get_must (stream , "open" ),
542
542
"fgetc file must be open" );
543
- #endif
543
+ #endif
544
544
545
545
return return_value ;
546
546
}
@@ -568,10 +568,10 @@ inline int getc(FILE *stream)
568
568
#endif
569
569
}
570
570
571
- #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
571
+ #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
572
572
__CPROVER_assert (__CPROVER_get_must (stream , "open" ),
573
573
"getc file must be open" );
574
- #endif
574
+ #endif
575
575
576
576
// It's a byte or EOF, which we fix to -1.
577
577
__CPROVER_assume (return_value >=-1 && return_value <=255 );
@@ -623,10 +623,10 @@ inline int getw(FILE *stream)
623
623
#endif
624
624
}
625
625
626
- #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
626
+ #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
627
627
__CPROVER_assert (__CPROVER_get_must (stream , "open" ),
628
628
"getw file must be open" );
629
- #endif
629
+ #endif
630
630
631
631
__CPROVER_input ("getw" , return_value );
632
632
@@ -648,18 +648,18 @@ inline int fseek(FILE *stream, long offset, int whence)
648
648
__CPROVER_HIDE :;
649
649
int return_value = __VERIFIER_nondet_int ();
650
650
651
- #if !defined(__linux__ ) || defined(__GLIBC__ )
651
+ #if !defined(__linux__ ) || defined(__GLIBC__ )
652
652
(void )* stream ;
653
- #else
653
+ #else
654
654
(void )* (char * )stream ;
655
- #endif
655
+ #endif
656
656
(void )offset ;
657
657
(void )whence ;
658
658
659
- #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
659
+ #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
660
660
__CPROVER_assert (__CPROVER_get_must (stream , "open" ),
661
661
"fseek file must be open" );
662
- #endif
662
+ #endif
663
663
664
664
return return_value ;
665
665
}
@@ -678,16 +678,16 @@ inline long ftell(FILE *stream)
678
678
__CPROVER_HIDE :;
679
679
long return_value = __VERIFIER_nondet_long ();
680
680
681
- #if !defined(__linux__ ) || defined(__GLIBC__ )
681
+ #if !defined(__linux__ ) || defined(__GLIBC__ )
682
682
(void )* stream ;
683
- #else
683
+ #else
684
684
(void )* (char * )stream ;
685
- #endif
685
+ #endif
686
686
687
- #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
687
+ #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
688
688
__CPROVER_assert (__CPROVER_get_must (stream , "open" ),
689
689
"ftell file must be open" );
690
- #endif
690
+ #endif
691
691
692
692
return return_value ;
693
693
}
@@ -701,18 +701,18 @@ inline long ftell(FILE *stream)
701
701
702
702
void rewind (FILE * stream )
703
703
{
704
- __CPROVER_HIDE :
704
+ __CPROVER_HIDE :
705
705
706
- #if !defined (__linux__ ) || defined (__GLIBC__ )
706
+ #if !defined (__linux__ ) || defined (__GLIBC__ )
707
707
(void )* stream ;
708
- #else
708
+ #else
709
709
(void )* (char * )stream ;
710
- #endif
710
+ #endif
711
711
712
- #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
712
+ #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
713
713
__CPROVER_assert (__CPROVER_get_must (stream , "open" ),
714
714
"rewind file must be open" );
715
- #endif
715
+ #endif
716
716
}
717
717
718
718
/* FUNCTION: fwrite */
@@ -743,10 +743,10 @@ size_t fwrite(
743
743
#endif
744
744
}
745
745
746
- #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
746
+ #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
747
747
__CPROVER_assert (__CPROVER_get_must (stream , "open" ),
748
748
"fwrite file must be open" );
749
- #endif
749
+ #endif
750
750
751
751
size_t nwrite = __VERIFIER_nondet_size_t ();
752
752
__CPROVER_assume (nwrite <=nitems );
@@ -873,10 +873,10 @@ inline int vfscanf(FILE *restrict stream, const char *restrict format, va_list a
873
873
(void )* format ;
874
874
(void )arg ;
875
875
876
- #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
876
+ #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
877
877
__CPROVER_assert (__CPROVER_get_must (stream , "open" ),
878
878
"vfscanf file must be open" );
879
- #endif
879
+ #endif
880
880
881
881
return result ;
882
882
}
@@ -977,10 +977,10 @@ inline int vfprintf(FILE *stream, const char *restrict format, va_list arg)
977
977
(void )* format ;
978
978
(void )arg ;
979
979
980
- #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
980
+ #ifdef __CPROVER_CUSTOM_BITVECTOR_ANALYSIS
981
981
__CPROVER_assert (__CPROVER_get_must (stream , "open" ),
982
982
"vfprintf file must be open" );
983
- #endif
983
+ #endif
984
984
985
985
return result ;
986
986
}
0 commit comments