/* * $Source$ * $Header$ */ #ifndef lint static char *rcsid_checksum_c = "$Header$"; #endif lint #include #include /* * checksum_fd(fd) * returns 24-bit checksum of bytes in file */ int checksum_fd(fd1) int fd1; { int fd; register int sum; register int ch; register FILE *f; fd = dup(fd1); sum = 0; (void) lseek(fd, 0, L_SET); f = fdopen(fd, "r"); while ((ch = getc(f)) != EOF) { sum = (sum + ch) & ((1<<24)-1); } fclose(f); return(sum); }