Exemplo n.º 1
0
/* 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);
}
Exemplo n.º 2
0
/* 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;
}
Exemplo n.º 3
0
Arquivo: ls.c Projeto: rdebath/cvs
/* 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;
}
Exemplo n.º 4
0
static int release_export_dirleaveproc(void *callerdat, char *dir, int err,
				    char *update_dir, List *entries)
{
	unlink_file_dir(CVSADM);
	return 0;
}