This is shortshift.c in view mode; [Download] [Up]
# include <stdio.h>
# include <limits.h>
int main(argc, argv) int argc; char **argv; {
int upshift;
short sample;
if(argc != 2 || (upshift = atoi(argv[1])) == 0) {
fprintf(stderr, "Usage: shortshift [+-]upshift\n");
exit(1);
}
if(upshift > 0)
while(fread(&sample, sizeof(sample), 1, stdin) == 1) {
long lsam = sample << upshift;
if(lsam > SHRT_MAX) sample = SHRT_MAX;
else if(lsam <SHRT_MIN) sample = SHRT_MIN;
else sample = lsam;
if(fwrite(&sample, sizeof(sample), 1, stdout) != 1) {
fprintf(stderr, "shortshift: PANIC: fwrite fails\n");
exit(2);
}
}
else if(upshift < 0) {
int downshift = -upshift;
short offset = 1 << (downshift - 1);
while(fread(&sample, sizeof(sample), 1, stdin) == 1) {
sample = (sample + offset) >> downshift;
if(fwrite(&sample, sizeof(sample), 1, stdout) != 1) {
fprintf(stderr, "shortshift: PANIC: fwrite fails\n");
exit(3);
}
}
}
return(0);
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.