utils/net_time.c

ソースコードを見る。

関数

static time_t cli_servertime (const char *host, struct in_addr *ip, int *zone)
static time_t nettime (int *zone)
static const char * systime (time_t t)
int net_time_usage (int argc, const char **argv)
static int net_time_set (int argc, const char **argv)
static int net_time_system (int argc, const char **argv)
static int net_time_zone (int argc, const char **argv)
int net_time (int argc, const char **argv)


関数

static time_t cli_servertime ( const char *  host,
struct in_addr *  ip,
int *  zone 
) [static]

net_time.c27 行で定義されています。

参照先 cli_state::calledcli_state::callingclicli_connect()cli_initialise()cli_negprot()cli_session_request()cli_shutdown()fprintf()global_mynamemake_nmb_name()nt_errstr()cli_state::servertimecli_state::serverzonestatus.

参照元 net_time()nettime().

00028 {
00029         struct nmb_name calling, called;
00030         time_t ret = 0;
00031         struct cli_state *cli = NULL;
00032         NTSTATUS status;
00033 
00034         cli = cli_initialise();
00035         if (!cli) {
00036                 goto done;
00037         }
00038 
00039         status = cli_connect(cli, host, ip);
00040         if (!NT_STATUS_IS_OK(status)) {
00041                 fprintf(stderr,"Can't contact server %s. Error %s\n", host, nt_errstr(status));
00042                 goto done;
00043         }
00044 
00045         make_nmb_name(&calling, global_myname(), 0x0);
00046         if (host) {
00047                 make_nmb_name(&called, host, 0x20);
00048         } else {
00049                 make_nmb_name(&called, "*SMBSERVER", 0x20);
00050         }
00051 
00052         if (!cli_session_request(cli, &calling, &called)) {
00053                 fprintf(stderr,"Session request failed\n");
00054                 goto done;
00055         }
00056         if (!cli_negprot(cli)) {
00057                 fprintf(stderr,"Protocol negotiation failed\n");
00058                 goto done;
00059         }
00060 
00061         ret = cli->servertime;
00062         if (zone) *zone = cli->serverzone;
00063 
00064 done:
00065         if (cli) {
00066                 cli_shutdown(cli);
00067         }
00068         return ret;
00069 }

static time_t nettime ( int *  zone  )  [static]

net_time.c72 行で定義されています。

参照先 cli_servertime()opt_dest_ipopt_have_ipopt_host.

参照元 net_time_set()net_time_system()net_time_zone().

00073 {
00074         return cli_servertime(opt_host, opt_have_ip? &opt_dest_ip : NULL, zone);
00075 }

static const char* systime ( time_t  t  )  [static]

net_time.c78 行で定義されています。

参照先 fstr_sprintf()localtime().

参照元 make_systemtime()net_time_set()net_time_system()notify_system_time()size_of_systemtime()spoolss_io_system_time().

00079 {
00080         static fstring s;
00081         struct tm *tm;
00082 
00083         tm = localtime(&t);
00084         if (!tm) {
00085                 return "unknown";
00086         }
00087         
00088         fstr_sprintf(s, "%02d%02d%02d%02d%04d.%02d", 
00089                  tm->tm_mon+1, tm->tm_mday, tm->tm_hour, 
00090                  tm->tm_min, tm->tm_year + 1900, tm->tm_sec);
00091         return s;
00092 }

int net_time_usage ( int  argc,
const char **  argv 
)

net_time.c94 行で定義されています。

参照先 d_printf()net_common_flags_usage().

参照元 net_help()net_time().

00095 {
00096         d_printf(
00097 "net time\n\tdisplays time on a server\n\n"\
00098 "net time system\n\tdisplays time on a server in a format ready for /bin/date\n\n"\
00099 "net time set\n\truns /bin/date with the time from the server\n\n"\
00100 "net time zone\n\tdisplays the timezone in hours from GMT on the remote computer\n\n"\
00101 "\n");
00102         net_common_flags_usage(argc, argv);
00103         return -1;
00104 }

static int net_time_set ( int  argc,
const char **  argv 
) [static]

net_time.c107 行で定義されています。

参照先 asprintf()d_fprintf()errnonettime()resultstrerror()systime()t.

参照元 net_time().

00108 {
00109         time_t t = nettime(NULL);
00110         char *cmd;
00111         int result;
00112 
00113         if (t == 0) return -1;
00114         
00115         /* yes, I know this is cheesy. Use "net time system" if you want to 
00116            roll your own. I'm putting this in as it works on a large number
00117            of systems and the user has a choice in whether its used or not */
00118         asprintf(&cmd, "/bin/date %s", systime(t));
00119         result = system(cmd);
00120         if (result)
00121                 d_fprintf(stderr, "%s failed.  Error was (%s)\n",
00122                         cmd, strerror(errno));
00123         free(cmd);
00124 
00125         return result;
00126 }

static int net_time_system ( int  argc,
const char **  argv 
) [static]

net_time.c129 行で定義されています。

参照先 nettime()printf()systime()t.

参照元 net_time().

00130 {
00131         time_t t = nettime(NULL);
00132 
00133         if (t == 0) return -1;
00134 
00135         printf("%s\n", systime(t));
00136 
00137         return 0;
00138 }

static int net_time_zone ( int  argc,
const char **  argv 
) [static]

net_time.c141 行で定義されています。

参照先 nettime()printf()t.

参照元 net_time().

00142 {
00143         int zone = 0;
00144         int hours, mins;
00145         char zsign;
00146         time_t t;
00147 
00148         t = nettime(&zone);
00149 
00150         if (t == 0) return -1;
00151 
00152         zsign = (zone > 0) ? '-' : '+';
00153         if (zone < 0) zone = -zone;
00154 
00155         zone /= 60;
00156         hours = zone / 60;
00157         mins = zone % 60;
00158 
00159         printf("%c%02d%02d\n", zsign, hours, mins);
00160 
00161         return 0;
00162 }

int net_time ( int  argc,
const char **  argv 
)

net_time.c165 行で定義されています。

参照先 cli_servertime()d_fprintf()d_printf()find_master_ip()net_run_function()net_time_set()net_time_system()net_time_usage()net_time_zone()opt_dest_ipopt_have_ipopt_hostopt_target_workgroupt.

00166 {
00167         time_t t;
00168         struct functable func[] = {
00169                 {"SYSTEM", net_time_system},
00170                 {"SET", net_time_set},
00171                 {"ZONE", net_time_zone},
00172                 {NULL, NULL}
00173         };
00174 
00175         if (!opt_host && !opt_have_ip && 
00176             !find_master_ip(opt_target_workgroup, &opt_dest_ip)) {
00177                 d_fprintf(stderr, "Could not locate a time server.  Try "\
00178                                  "specifying a target host.\n");
00179                 net_time_usage(argc,argv);
00180                 return -1;
00181         }
00182 
00183         if (argc != 0) {
00184                 return net_run_function(argc, argv, func, net_time_usage);
00185         }
00186 
00187         /* default - print the time */
00188         t = cli_servertime(opt_host, opt_have_ip? &opt_dest_ip : NULL, NULL);
00189         if (t == 0) return -1;
00190 
00191         d_printf("%s", ctime(&t));
00192         return 0;
00193 }


Sambaに対してSat Aug 29 21:24:36 2009に生成されました。  doxygen 1.4.7