18ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/*
28ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * $Id: util.c,v 1.1 2004/11/14 07:26:26 paulus Exp $
38ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project *
48ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * Copyright (C) 1995,1996,1997 Lars Fenneberg
58ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project *
68ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * Copyright 1992 Livingston Enterprises, Inc.
78ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project *
88ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * Copyright 1992,1993, 1994,1995 The Regents of the University of Michigan
98ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * and Merit Network, Inc. All Rights Reserved
108ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project *
118ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * See the file COPYRIGHT for the respective terms and conditions.
128ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * If the file is missing contact me at lf@elemental.net
138ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * and I'll send you a copy.
148ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project *
158ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project */
168ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
178ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#include <includes.h>
188ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project#include <radiusclient.h>
198ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
208ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/*
218ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * Function: rc_str2tm
228ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project *
238ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * Purpose: Turns printable string into correct tm struct entries.
248ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project *
258ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project */
268ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
278ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectstatic const char * months[] =
288ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project		{
298ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project			"Jan", "Feb", "Mar", "Apr", "May", "Jun",
308ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project			"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
318ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project		};
328ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
338ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectvoid rc_str2tm (char *valstr, struct tm *tm)
348ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project{
358ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	int             i;
368ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
378ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	/* Get the month */
388ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	for (i = 0; i < 12; i++)
398ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	{
408ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project		if (strncmp (months[i], valstr, 3) == 0)
418ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project		{
428ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project			tm->tm_mon = i;
438ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project			i = 13;
448ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project		}
458ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	}
468ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
478ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	/* Get the Day */
488ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	tm->tm_mday = atoi (&valstr[4]);
498ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
508ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	/* Now the year */
518ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	tm->tm_year = atoi (&valstr[7]) - 1900;
528ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project}
538ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
548ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectvoid rc_mdelay(int msecs)
558ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project{
568ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	struct timeval tv;
578ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
588ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	tv.tv_sec = (int) msecs / 1000;
598ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	tv.tv_usec = (msecs % 1000) * 1000;
608ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
618ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	select(0,(fd_set *)NULL,(fd_set *)NULL,(fd_set *)NULL, &tv);
628ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project}
638ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
648ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project/*
658ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * Function: rc_mksid
668ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project *
678ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * Purpose: generate a quite unique string
688ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project *
698ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project * Remarks: not that unique at all...
708ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project *
718ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project */
728ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project
738ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectchar *
748ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Projectrc_mksid (void)
758ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project{
768ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project  static char buf[15];
778ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project  static unsigned short int cnt = 0;
788ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project  sprintf (buf, "%08lX%04X%02hX",
798ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	   (unsigned long int) time (NULL),
808ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	   (unsigned int) getpid (),
818ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project	   cnt & 0xFF);
828ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project  cnt++;
838ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project  return buf;
848ad0dd2a5c5f23cd210aedba72a43e48026e7436The Android Open Source Project}
85