-
- return lockfd;
-}
-
-static void free_lock(int lockfd)
-{
- struct flock lock;
-
- lock.l_start = 0;
- lock.l_whence = SEEK_SET;
- lock.l_len = 0;
- lock.l_type = F_UNLCK;
- fcntl(lockfd, F_SETLK, &lock);
- close(lockfd);
-}
-
-static void usage (void)
-{
- printf("Usage: dbd [-e|-v|-x] -d [-i] | -s [-c|-n]| -r [-c|-f] | -u <path to netatalk volume>\n"
- "dbd can dump, scan, reindex and rebuild Netatalk dbd CNID databases.\n"
- "dbd must be run with appropiate permissions i.e. as root.\n\n"
- "Main commands are:\n"
- " -d Dump CNID database\n"
- " Option: -i dump indexes too\n\n"
- " -s Scan volume:\n"
- " 1. Compare CNIDs in database with volume\n"
- " 2. Check if .AppleDouble dirs exist\n"
- " 3. Check if AppleDouble file exist\n"
- " 4. Report orphaned AppleDouble files\n"
- " 5. Check for directories inside AppleDouble directories\n"
- " 6. Check name encoding by roundtripping, log on error\n"
- " 7. Check for orphaned CNIDs in database (requires -e)\n"
- " 8. Open and close adouble files\n"
- " Options: -c Don't check .AppleDouble stuff, only ckeck orphaned.\n"
- " -n Don't open CNID database, skip CNID checks\n\n"
- " -r Rebuild volume:\n"
- " 1. Sync CNIDSs in database with volume\n"
- " 2. Make sure .AppleDouble dir exist, create if missing\n"
- " 3. Make sure AppleDouble file exists, create if missing\n"
- " 4. Delete orphaned AppleDouble files\n"
- " 5. Check for directories inside AppleDouble directories\n"
- " 6. Check name encoding by roundtripping, log on error\n"
- " 7. Check for orphaned CNIDs in database (requires -e)\n"
- " 8. Open and close adouble files\n"
- " Options: -c Don't create .AppleDouble stuff, only cleanup orphaned.\n"
- " -f wipe database and rebuild from IDs stored in AppleDouble files,\n"
- " only available for volumes without 'nocnidcache' option. Implies -e.\n\n"
- " -u Prepare upgrade:\n"
- " Before installing an upgraded version of Netatalk that is linked against\n"
- " a newer BerkeleyDB lib, run `dbd -u ...` from the OLD Netatalk pior to\n"
- " upgrading on all volumes. This removes the BerkleyDB environment.\n"
- " On exit cnid_dbd does this automatically, so normally calling dbd -u should not be necessary.\n\n"
- "General options:\n"
- " -e only work on inactive volumes and lock them (exclusive)\n"
- " -x rebuild indexes (just for completeness, mostly useless!)\n"
- " -v verbose\n\n"
- "WARNING:\n"
- "For -r -f restore of the CNID database from the adouble files, the CNID must of course\n"
- "be synched to them files first with a plain -r rebuild !\n"
- );