1/* Check that the truncate syscall works trivially. 2#notarget: cris*-*-elf 3*/ 4 5#include <stdio.h> 6#include <stdlib.h> 7#include <string.h> 8 9#ifndef PREFIX 10#define PREFIX 11#endif 12int 13main (void) 14{ 15 FILE *f; 16 const char fname[] = PREFIX "sk1test.dat"; 17 const char tsttxt1[] 18 = "This is the first and only line of this file.\n"; 19 const char tsttxt2[] = "Now there is a second line.\n"; 20 char buf[sizeof (tsttxt1) + sizeof (tsttxt2) - 1] = ""; 21 22 f = fopen (fname, "w+"); 23 if (f == NULL 24 || fwrite (tsttxt1, 1, strlen (tsttxt1), f) != strlen (tsttxt1) 25 || fclose (f) != 0) 26 { 27 printf ("fail\n"); 28 exit (1); 29 } 30 31 if (truncate (fname, strlen(tsttxt1) - 10) != 0) 32 { 33 perror ("truncate"); 34 exit (1); 35 } 36 37 f = fopen (fname, "r"); 38 if (f == NULL 39 || fread (buf, 1, sizeof (buf), f) != strlen (tsttxt1) - 10 40 || strncmp (buf, tsttxt1, strlen (tsttxt1) - 10) != 0 41 || fclose (f) != 0) 42 { 43 printf ("fail\n"); 44 exit (1); 45 } 46 47 printf ("pass\n"); 48 exit (0); 49} 50