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