+int check_big_ID(char *filename)
+{
+ struct stat64 sbuf;
+
+ memset(&sbuf, 0, sizeof(struct stat64));
+ if (lstat64(filename, &sbuf) < 0) {
+ fprintf(stderr, "lstat64 failed on ");
+ perror(filename);
+ return(1);
+ }
+
+ /* 98789 is greater than 2^16 (65536) */
+ if ((__u32)sbuf.st_uid == 98789 || (__u32)sbuf.st_gid == 98789)
+ return(0);
+ if (verbose)
+ fprintf(stderr, "lstat64 on %s gave uid=%d, gid=%d\n",
+ filename, sbuf.st_uid, sbuf.st_gid);
+ return(1);
+}
+
+int
+haschown32(char *filename)
+{
+ if (check_big_ID(filename) == 0)
+ return(0);
+
+ if (chown(filename, 98789, 98789) < 0) {
+ fprintf(stderr, "chown failed on ");
+ perror(filename);
+ return(1);
+ }
+
+ if (check_big_ID(filename) == 0)
+ return(0);
+ return (1);
+}
+