#include "../H/sfheader.h" #include #include #include #include #include #include static SFCODE ampcode = { SF_MAXAMP, sizeof(SFMAXAMP) + sizeof(SFCODE) }; main(argc,argv) int argc; char **argv; { int sf,result; struct stat sfst; long dur; SFHEADER sfh; char *sfname; double atof(),amount; if(argc != 3) { printf("format: sfshrink new_duration_in_seconds filename\n"); exit(-1); } amount = atof(*++argv); sfname = *++argv; rwopensf(sfname,sf,sfh,sfst,"sfprint",result,2) if(result < 0) exit(-1); dur = amount * sfsrate(&sfh) * sfclass(&sfh) * sfchans(&sfh) + SIZEOF_HEADER; dur -= dur % (sfclass(&sfh) * sfchans(&sfh)); if(ftruncate(sf,(long)dur) < 0) printf("Bad truncation\n"); if(fsync(sf) < 0) printf("bad fsync\n"); close(sf); }