Deleted Added
full compact
5c5
< * specified in the README file that comes with the CVS 1.4 kit.
---
> * specified in the README file that comes with the CVS source distribution.
159a160
> {
160a162,178
> /* If there are no sub-directories, there is a certain logic in
> favor of doing nothing, but in fact probably the user is just
> confused about what directory they are in, or whether they
> cvs add'd a new directory. In the case of at least one
> sub-directory, at least when we recurse into them we
> notice (hopefully) whether they are under CVS control. */
> if (list_isempty (dirlist))
> {
> if (update_dir[0] == '\0')
> error (0, 0, "in directory .:");
> else
> error (0, 0, "in directory %s:", update_dir);
> error (1, 0,
> "there is no version here; run '%s checkout' first",
> program_name);
> }
> }
640c658
< (void) sprintf (newrepos, "%s/%s", repository, dir);
---
> sprintf (newrepos, "%s/%s", repository, dir);
653a672,729
> /* Check to see that the CVSADM directory, if it exists, seems to be
> well-formed. It can be missing files if the user hit ^C in the
> middle of a previous run. We want to (a) make this a nonfatal
> error, and (b) make sure we print which directory has the
> problem.
>
> Do this before the direntproc, so that (1) the direntproc
> doesn't have to guess/deduce whether we will skip the directory
> (e.g. send_dirent_proc and whether to send the directory), and
> (2) so that the warm fuzzy doesn't get printed if we skip the
> directory. */
> if (frame->which & W_LOCAL)
> {
> char *cvsadmdir;
>
> cvsadmdir = xmalloc (strlen (dir)
> + sizeof (CVSADM_REP)
> + sizeof (CVSADM_ENT)
> + 80);
>
> strcpy (cvsadmdir, dir);
> strcat (cvsadmdir, "/");
> strcat (cvsadmdir, CVSADM);
> if (isdir (cvsadmdir))
> {
> strcpy (cvsadmdir, dir);
> strcat (cvsadmdir, "/");
> strcat (cvsadmdir, CVSADM_REP);
> if (!isfile (cvsadmdir))
> {
> /* Some commands like update may have printed "? foo" but
> if we were planning to recurse, and don't on account of
> CVS/Repository, we want to say why. */
> error (0, 0, "ignoring %s (%s missing)", update_dir,
> CVSADM_REP);
> dir_return = R_SKIP_ALL;
> }
>
> /* Likewise for CVS/Entries. */
> if (dir_return != R_SKIP_ALL)
> {
> strcpy (cvsadmdir, dir);
> strcat (cvsadmdir, "/");
> strcat (cvsadmdir, CVSADM_ENT);
> if (!isfile (cvsadmdir))
> {
> /* Some commands like update may have printed "? foo" but
> if we were planning to recurse, and don't on account of
> CVS/Repository, we want to say why. */
> error (0, 0, "ignoring %s (%s missing)", update_dir,
> CVSADM_ENT);
> dir_return = R_SKIP_ALL;
> }
> }
> }
> free (cvsadmdir);
> }
>
655c731,733
< if (frame->direntproc != NULL)
---
> if (dir_return == R_SKIP_ALL)
> ;
> else if (frame->direntproc != NULL)
657a736,743
> else
> {
> /* Generic behavior. I don't see a reason to make the caller specify
> a direntproc just to get this. */
> if ((frame->which & W_LOCAL) && !isdir (dir))
> dir_return = R_SKIP_ALL;
> }
>