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