Cross Reference: mk_cmds.c
xref
: /
osnet-11
/
usr
/
src
/
lib
/
krb5
/
ss
/
mk_cmds.c
Home
History
Annotate
Line#
Navigate
Download
Search
only in
./
2
N/A
/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
N/A
/*
2
N/A
*
make_commands.c
2
N/A
*
2
N/A
*
util
/
ss
/
mk_cmds.c
2
N/A
*
2
N/A
* Copyright 1987, 1988 by MIT Student Information Processing Board
2
N/A
*
2
N/A
* For copyright information, see
copyright.h
.
2
N/A
*/
2
N/A
2
N/A
/*
2
N/A
* Copyright (c) 2006, 2011, Oracle
and
/
or
its affiliates. All rights reserved.
2
N/A
*/
2
N/A
2
N/A
#
include
"
copyright.h
"
2
N/A
#
include
<
stdio.h
>
2
N/A
#
include
<
sys
/
param.h
>
2
N/A
#
include
<
sys
/
types.h
>
2
N/A
#
include
<
sys
/
file.h
>
2
N/A
#
include
<
string.h
>
2
N/A
#
include
"
ss_internal.h
"
2
N/A
2
N/A
static
const
char
copyright
[] =
2
N/A
"Copyright 1987 by MIT Student Information Processing Board"
;
2
N/A
2
N/A
extern
pointer
malloc
(
unsigned
);
2
N/A
extern
char
*
last_token
;
2
N/A
extern
FILE
*
output_file
;
2
N/A
2
N/A
extern
FILE
*
yyin
, *
yyout
;
2
N/A
#
ifndef
NO_YYLINENO
2
N/A
extern
int
yylineno
;
2
N/A
#
endif
2
N/A
2
N/A
int
main
(
argc
,
argv
)
2
N/A
int
argc
;
2
N/A
char
**
argv
;
2
N/A
{
2
N/A
char
c_file
[
MAXPATHLEN
];
2
N/A
int
result
;
2
N/A
char
*
path
, *p, *q;
2
N/A
2
N/A
if
(
argc
!=
2
) {
2
N/A
fputs
(
"Usage: "
,
stderr
);
2
N/A
fputs
(
argv
[0],
stderr
);
2
N/A
fputs
(
"
cmdtbl.c
t\n"
,
stderr
);
2
N/A
exit
(
1
);
2
N/A
}
2
N/A
2
N/A
path
=
malloc
(
strlen
(
argv
[
1
])+
4
);
/* extra space to add ".ct" */
2
N/A
strcpy
(
path
,
argv
[
1
]);
2
N/A
p =
strrchr
(
path
,
'/'
);
2
N/A
if
(p == (
char
*)
NULL
)
2
N/A
p =
path
;
2
N/A
else
2
N/A
p++;
2
N/A
p =
strrchr
(p,
'.'
);
2
N/A
if
(p == (
char
*)
NULL
||
strcmp
(p,
".ct"
))
2
N/A
strcat
(
path
,
".ct"
);
2
N/A
/* Solaris Kerberos */
2
N/A
yyin
=
fopen
(
path
,
"rF"
);
2
N/A
if
(!
yyin
) {
2
N/A
perror
(
path
);
2
N/A
exit
(
1
);
2
N/A
}
2
N/A
2
N/A
p =
strrchr
(
path
,
'.'
);
2
N/A
*p =
'\0'
;
2
N/A
q =
rindex
(
path
,
'/'
);
2
N/A
strncpy
(
c_file
, (q) ? q +
1
:
path
,
sizeof
(
c_file
) -
1
);
2
N/A
c_file
[
sizeof
(
c_file
) -
1
] =
'\0'
;
2
N/A
strncat
(
c_file
,
".c"
,
sizeof
(
c_file
) -
1
-
strlen
(
c_file
));
2
N/A
*p =
'.'
;
2
N/A
2
N/A
/* Solaris Kerberos */
2
N/A
output_file
=
fopen
(
c_file
,
"w+F"
);
2
N/A
if
(!
output_file
) {
2
N/A
perror
(
c_file
);
2
N/A
exit
(
1
);
2
N/A
}
2
N/A
2
N/A
fputs
(
"/* "
,
output_file
);
2
N/A
fputs
(
c_file
,
output_file
);
2
N/A
fputs
(
" - automatically generated from "
,
output_file
);
2
N/A
fputs
(
path
,
output_file
);
2
N/A
fputs
(
" */\n"
,
output_file
);
2
N/A
fputs
(
"#include <
ss
/
ss.h
>\n\n"
,
output_file
);
2
N/A
fputs
(
"#ifndef __STDC__\n#define const\n#endif\n\n"
,
output_file
);
2
N/A
/* parse it */
2
N/A
result
=
yyparse
();
2
N/A
/* put file descriptors back where they belong */
2
N/A
fclose
(
yyin
);
/* bye bye input file */
2
N/A
fclose
(
output_file
);
/* bye bye output file */
2
N/A
2
N/A
return
result
;
2
N/A
}
2
N/A
2
N/A
yyerror
(s)
2
N/A
char
*s;
2
N/A
{
2
N/A
fputs
(s,
stderr
);
2
N/A
#
ifdef
NO_YYLINENO
2
N/A
fprintf
(
stderr
,
"\nLast token was '%s'\n"
,
last_token
);
2
N/A
#
else
2
N/A
fprintf
(
stderr
,
"\nLine %d; last token was '%s'\n"
,
2
N/A
yylineno
,
last_token
);
2
N/A
#
endif
2
N/A
}