xref: /openbsd-src/usr.bin/cvs/cmd.c (revision b9fc9a728fce9c4289b7e9a992665e28d5629a54)
1*b9fc9a72Sderaadt /*	$OpenBSD: cmd.c,v 1.69 2015/01/16 06:40:07 deraadt Exp $	*/
2d868b2d9Sjoris /*
3d868b2d9Sjoris  * Copyright (c) 2005 Joris Vink <joris@openbsd.org>
4d868b2d9Sjoris  * All rights reserved.
5d868b2d9Sjoris  *
6d868b2d9Sjoris  * Redistribution and use in source and binary forms, with or without
7d868b2d9Sjoris  * modification, are permitted provided that the following conditions
8d868b2d9Sjoris  * are met:
9d868b2d9Sjoris  *
10d868b2d9Sjoris  * 1. Redistributions of source code must retain the above copyright
11d868b2d9Sjoris  *    notice, this list of conditions and the following disclaimer.
12d868b2d9Sjoris  * 2. The name of the author may not be used to endorse or promote products
13d868b2d9Sjoris  *    derived from this software without specific prior written permission.
14d868b2d9Sjoris  *
15d868b2d9Sjoris  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
16d868b2d9Sjoris  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
17d868b2d9Sjoris  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
18d868b2d9Sjoris  * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19d868b2d9Sjoris  * EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20d868b2d9Sjoris  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
21d868b2d9Sjoris  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
22d868b2d9Sjoris  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
23d868b2d9Sjoris  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
24d868b2d9Sjoris  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25d868b2d9Sjoris  */
26*b9fc9a72Sderaadt #include <sys/types.h>
271f8531bdSotto #include <sys/dirent.h>
28d868b2d9Sjoris 
291f8531bdSotto #include <string.h>
30d868b2d9Sjoris 
31d868b2d9Sjoris #include "cvs.h"
32d868b2d9Sjoris 
33e4276007Sjfb struct cvs_cmd *cvs_cdt[] = {
3419615a73Sjoris 	&cvs_cmd_add,
3540133d45Sxsa 	&cvs_cmd_admin,
367d8fc710Sxsa 	&cvs_cmd_annotate,
373ad3fb45Sjoris 	&cvs_cmd_commit,
383ad3fb45Sjoris 	&cvs_cmd_checkout,
393ad3fb45Sjoris 	&cvs_cmd_diff,
4025654a94Sjoris 	&cvs_cmd_export,
413901dfa5Sjoris 	&cvs_cmd_history,
421dd2d57eSjoris 	&cvs_cmd_import,
43db68708cSxsa 	&cvs_cmd_init,
44e8c16debSjoris 	&cvs_cmd_log,
45e9658789Stobias 	&cvs_cmd_rannotate,
46fd660bf2Stobias 	&cvs_cmd_rdiff,
47eb6eca7cSxsa 	&cvs_cmd_release,
4827a8b24eSjoris 	&cvs_cmd_remove,
49449bca81Sniallo 	&cvs_cmd_rlog,
504b15c6ebStobias 	&cvs_cmd_rtag,
5140133d45Sxsa 	&cvs_cmd_server,
523ad3fb45Sjoris 	&cvs_cmd_status,
53a7e730bbSxsa 	&cvs_cmd_tag,
54a7e730bbSxsa 	&cvs_cmd_update,
55f5e00cb0Sxsa 	&cvs_cmd_version,
563ad3fb45Sjoris #if 0
57e4276007Sjfb 	&cvs_cmd_edit,
58e4276007Sjfb 	&cvs_cmd_editors,
59e4276007Sjfb 	&cvs_cmd_unedit,
60e4276007Sjfb 	&cvs_cmd_watch,
61e4276007Sjfb 	&cvs_cmd_watchers,
623ad3fb45Sjoris #endif
63e4276007Sjfb 	NULL
64e4276007Sjfb };
65e4276007Sjfb 
66e4276007Sjfb struct cvs_cmd *
cvs_findcmd(const char * cmd)67e4276007Sjfb cvs_findcmd(const char *cmd)
68e4276007Sjfb {
69e4276007Sjfb 	int i, j;
70f069badeStobias 	struct cvs_cmd *p;
71e4276007Sjfb 
72f069badeStobias 	p = NULL;
73f069badeStobias 	for (i = 0; (cvs_cdt[i] != NULL) && (p == NULL); i++) {
74e4276007Sjfb 		if (strcmp(cmd, cvs_cdt[i]->cmd_name) == 0)
75f069badeStobias 			p = cvs_cdt[i];
76e4276007Sjfb 		else {
77e4276007Sjfb 			for (j = 0; j < CVS_CMD_MAXALIAS; j++) {
78e4276007Sjfb 				if (strcmp(cmd,
79e4276007Sjfb 				    cvs_cdt[i]->cmd_alias[j]) == 0) {
80f069badeStobias 					p = cvs_cdt[i];
81e4276007Sjfb 					break;
82e4276007Sjfb 				}
83e4276007Sjfb 			}
84e4276007Sjfb 		}
85e4276007Sjfb 	}
86e4276007Sjfb 
87f069badeStobias 	return (p);
88e4276007Sjfb }
89