summaryrefslogtreecommitdiff
path: root/usr.bin/cvs
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/cvs')
-rw-r--r--usr.bin/cvs/file.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/usr.bin/cvs/file.c b/usr.bin/cvs/file.c
index a52da5e95a4..222dab3fee7 100644
--- a/usr.bin/cvs/file.c
+++ b/usr.bin/cvs/file.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: file.c,v 1.143 2006/05/28 07:56:44 joris Exp $ */
+/* $OpenBSD: file.c,v 1.144 2006/05/28 08:49:01 joris Exp $ */
/*
* Copyright (c) 2006 Joris Vink <joris@openbsd.org>
* Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org>
@@ -569,11 +569,25 @@ cvs_file_classify(struct cvs_file *cf, int loud)
cf->file_rpath = xstrdup(rcsfile);
cf->file_ent = cvs_ent_get(entlist, cf->file_name);
+ if (cf->file_ent != NULL) {
+ if (cf->file_ent->ce_type == CVS_ENT_DIR &&
+ cf->file_type != CVS_DIR)
+ fatal("%s is suppose to be a directory, but it is not",
+ cf->file_path);
+ if (cf->file_ent->ce_type == CVS_ENT_FILE &&
+ cf->file_type != CVS_FILE)
+ fatal("%s is suppose to be a file, but it is not",
+ cf->file_path);
+ }
+
if (cf->file_type == CVS_DIR) {
if (cf->fd == -1 && stat(rcsfile, &st) != -1)
cf->file_status = DIR_CREATE;
else if (cf->file_ent != NULL)
cf->file_status = FILE_UPTODATE;
+ else
+ cf->file_status = FILE_UNKNOWN;
+
xfree(repo);
xfree(rcsfile);
cvs_ent_close(entlist, ENT_NOSYNC);