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