/* ARGSUSED */ static int release_delete_dirleaveproc(void *callerdat, char *dir, int err, char *update_dir, List *entries) { if (strchr (dir, '/') == NULL) { /* FIXME: chdir ("..") loses with symlinks. */ /* Prune empty dirs on the way out - if necessary */ unlink_file_dir(CVSADM); (void) CVS_CHDIR (".."); if (force_delete || isemptydir (dir, 0)) { List *list; /* I'm not sure the existence_error is actually possible (except in cases where we really should print a message), but since this code used to ignore all errors, I'll play it safe. */ if (unlink_file_dir (dir) < 0 && !existence_error (errno)) error (0, errno, "cannot remove %s directory", dir); if(isdir(CVSADM)) { list = Entries_Open(0,NULL); Subdir_Deregister (list, (char *) NULL, dir); Entries_Close(list); } } } return (err); }
/* Clean up tags, dates, and dirs if we created this directory. */ static int ls_dirleaveproc (void *callerdat, const char *dir, int err, const char *update_dir, List *entries) { if (created_dir && !strcmp (created_dir, update_dir)) { if (set_tag) { if (show_tag) free (show_tag); if (show_date) free (show_date); show_tag = show_date = NULL; set_tag = false; } (void)CVS_CHDIR (".."); if (unlink_file_dir (dir)) error (0, errno, "Failed to remove directory `%s'", created_dir); Subdir_Deregister (entries, NULL, dir); free (created_dir); created_dir = NULL; } return err; }
/* Clean up tags, dates, and dirs if we created this directory. */ static int ls_dirleaveproc (void *callerdat, const char *dir, int err, const char *update_dir, List *entries) { TRACE (TRACE_FUNCTION, "ls_dirleaveproc (%s, %d, %s)", dir, err, update_dir); if (created_dir && STREQ (created_dir, update_dir)) { if (set_tag) { if (show_tag) free (show_tag); if (show_date) free (show_date); show_tag = show_date = NULL; set_tag = false; } CVS_CHDIR (".."); if (unlink_file_dir (dir)) error (0, errno, "Failed to remove directory %s", quote (created_dir)); Subdir_Deregister (entries, NULL, dir); free (created_dir); created_dir = NULL; } return err; }
static int release_export_dirleaveproc(void *callerdat, char *dir, int err, char *update_dir, List *entries) { unlink_file_dir(CVSADM); return 0; }