13839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/*
23839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * Various minor routines...
33839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o *
43839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * Copyright 1987, 1988, 1989 by MIT
53839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o *
606cefee50dc681838454fcd079ba5b2760969f1bTheodore Ts'o * Permission to use, copy, modify, and distribute this software and
706cefee50dc681838454fcd079ba5b2760969f1bTheodore Ts'o * its documentation for any purpose is hereby granted, provided that
806cefee50dc681838454fcd079ba5b2760969f1bTheodore Ts'o * the names of M.I.T. and the M.I.T. S.I.P.B. not be used in
906cefee50dc681838454fcd079ba5b2760969f1bTheodore Ts'o * advertising or publicity pertaining to distribution of the software
1006cefee50dc681838454fcd079ba5b2760969f1bTheodore Ts'o * without specific, written prior permission.  M.I.T. and the
1106cefee50dc681838454fcd079ba5b2760969f1bTheodore Ts'o * M.I.T. S.I.P.B. make no representations about the suitability of
1206cefee50dc681838454fcd079ba5b2760969f1bTheodore Ts'o * this software for any purpose.  It is provided "as is" without
1306cefee50dc681838454fcd079ba5b2760969f1bTheodore Ts'o * express or implied warranty.
143839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o */
153839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
16d1154eb460efe588eaed3d439c1caaca149fa362Theodore Ts'o#include "config.h"
173839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#include <stdio.h>
183839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#include "ss_internal.h"
193839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
201e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o#define	DECLARE(name) void name(int argc,const char * const *argv, \
211e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o				int sci_idx, void *infop)
22efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o
233839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/*
243839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * ss_self_identify -- assigned by default to the "." request
253839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o */
26544349270e4c74a6feb971123884a8cf5052a7eeTheodore Ts'ovoid ss_self_identify(int argc __SS_ATTR((unused)),
27544349270e4c74a6feb971123884a8cf5052a7eeTheodore Ts'o		      const char * const *argv __SS_ATTR((unused)),
28544349270e4c74a6feb971123884a8cf5052a7eeTheodore Ts'o		      int sci_idx, void *infop __SS_ATTR((unused)))
293839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o{
303839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o     register ss_data *info = ss_info(sci_idx);
313839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o     printf("%s version %s\n", info->subsystem_name,
323839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o	    info->subsystem_version);
333839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o}
343839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
353839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/*
363839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * ss_subsystem_name -- print name of subsystem
373839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o */
38544349270e4c74a6feb971123884a8cf5052a7eeTheodore Ts'ovoid ss_subsystem_name(int argc __SS_ATTR((unused)),
39544349270e4c74a6feb971123884a8cf5052a7eeTheodore Ts'o		       const char * const *argv __SS_ATTR((unused)),
40efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o		       int sci_idx,
41544349270e4c74a6feb971123884a8cf5052a7eeTheodore Ts'o		       void *infop __SS_ATTR((unused)))
423839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o{
433839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o     printf("%s\n", ss_info(sci_idx)->subsystem_name);
443839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o}
453839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
463839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/*
473839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * ss_subsystem_version -- print version of subsystem
483839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o */
49544349270e4c74a6feb971123884a8cf5052a7eeTheodore Ts'ovoid ss_subsystem_version(int argc __SS_ATTR((unused)),
50544349270e4c74a6feb971123884a8cf5052a7eeTheodore Ts'o			  const char * const *argv __SS_ATTR((unused)),
51efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o			  int sci_idx,
52544349270e4c74a6feb971123884a8cf5052a7eeTheodore Ts'o			  void *infop __SS_ATTR((unused)))
533839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o{
543839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o     printf("%s\n", ss_info(sci_idx)->subsystem_version);
553839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o}
563839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o
573839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/*
583839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * ss_unimplemented -- routine not implemented (should be
593839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * set up as (dont_list,dont_summarize))
603839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o */
61544349270e4c74a6feb971123884a8cf5052a7eeTheodore Ts'ovoid ss_unimplemented(int argc __SS_ATTR((unused)),
62544349270e4c74a6feb971123884a8cf5052a7eeTheodore Ts'o		      const char * const *argv __SS_ATTR((unused)),
63544349270e4c74a6feb971123884a8cf5052a7eeTheodore Ts'o		      int sci_idx, void *infop __SS_ATTR((unused)))
643839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o{
653839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o     ss_perror(sci_idx, SS_ET_UNIMPLEMENTED, "");
663839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o}
67