diff options
Diffstat (limited to 'usr.bin/cvs')
-rw-r--r-- | usr.bin/cvs/file.c | 16 |
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); |