xref: /onnv-gate/usr/src/cmd/cmd-inet/usr.sbin/in.ftpd/xferlog.c (revision 0:68f95e015346)
1 /*
2  * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
3  * Use is subject to license terms.
4  */
5 
6 #pragma ident	"%Z%%M%	%I%	%E% SMI"
7 
8 #include "config.h"
9 #include <string.h>
10 #include "extensions.h"
11 #include "proto.h"
12 
13 #define DEFXFERFORMAT	"%T %Xt %R %Xn %XP %Xy %Xf %Xd %Xm %U ftp %Xa %u %Xc"
14 
15 int xferdone = 0;
16 struct xferstat xfervalues;
17 char xferlog_format[MAXXFERSTRLEN] = DEFXFERFORMAT;
18 
19 /*************************************************************************/
20 /* FUNCTION  : get_xferlog_format                                        */
21 /* PURPOSE   : Read the xferlog format string from ftpaccess into        */
22 /*             xferlog_format if it exists otherwise load default string */
23 /* ARGUMENTS : none                                                      */
24 /*************************************************************************/
25 
get_xferlog_format(void)26 void get_xferlog_format(void)
27 {
28     int which;
29     struct aclmember *entry = (struct aclmember *)NULL;
30 
31     /* xferlog format <formatstring> */
32     xferlog_format[0] = '\0';
33     while (getaclentry("xferlog", &entry)) {
34 	if (ARG0 && (strcasecmp(ARG0, "format") == 0)) {
35 	    for (which = 1; (which < MAXARGS) && ARG[which]; which++) {
36 		if (which > 1) {
37 		    if (strlcat(xferlog_format, " ",
38 			sizeof(xferlog_format)) >= sizeof(xferlog_format))
39 			break;
40 		}
41 		if (strlcat(xferlog_format, ARG[which],
42 		    sizeof(xferlog_format)) >= sizeof(xferlog_format))
43 		    break;
44 	    }
45 	    break;
46 	}
47     }
48 
49     /* default xferlog format */
50     if (xferlog_format[0] == '\0')
51 	(void) strlcpy(xferlog_format, DEFXFERFORMAT, sizeof(xferlog_format));
52 }
53