From 5d36376c07c665b175440e51b03fd85fc58422b0 Mon Sep 17 00:00:00 2001 From: Nickolai Zeldovich Date: Thu, 22 Aug 2002 18:01:51 +0000 Subject: [PATCH] Add two useful functions for string operations: afs_strdup() and afs_osi_FreeStr(). Will be used by an upcoming patch. --- src/afs/UKERNEL/afs_usrops.c | 5 +++++ src/afs/afs_cell.c | 17 ----------------- src/afs/afs_osi.c | 4 ++++ src/afs/afs_prototypes.h | 10 +++++----- src/afs/afs_util.c | 29 +++++++++++++++++++++++++++++ 5 files changed, 43 insertions(+), 22 deletions(-) diff --git a/src/afs/UKERNEL/afs_usrops.c b/src/afs/UKERNEL/afs_usrops.c index e18c40b75..6043a637e 100644 --- a/src/afs/UKERNEL/afs_usrops.c +++ b/src/afs/UKERNEL/afs_usrops.c @@ -899,6 +899,11 @@ void afs_osi_Free(void *ptr, size_t size) free(ptr); } +void afs_osi_FreeStr(char *ptr) +{ + free(ptr); +} + void *osi_AllocLargeSpace(size_t size) { AFS_STATCNT(osi_AllocLargeSpace); diff --git a/src/afs/afs_cell.c b/src/afs/afs_cell.c index ba13ea9c4..058b42f16 100644 --- a/src/afs/afs_cell.c +++ b/src/afs/afs_cell.c @@ -77,23 +77,6 @@ char afs_AfsdbHandler_ReqPending = 0; /* Handler sets Completed to 1 when it completes the client request */ char afs_AfsdbHandler_Completed = 0; -int afs_strcasecmp(register char *s1, register char *s2) -{ - while (*s1 && *s2) { - register char c1, c2; - - c1 = *s1++; - c2 = *s2++; - if (c1 >= 'A' && c1 <= 'Z') c1 += 0x20; - if (c2 >= 'A' && c2 <= 'Z') c2 += 0x20; - if (c1 != c2) - return c1-c2; - } - - return *s1 - *s2; -} - - #ifdef AFS_AFSDB_ENV void afs_StopAfsdb(void) { diff --git a/src/afs/afs_osi.c b/src/afs/afs_osi.c index 81db07afe..28714f70e 100644 --- a/src/afs/afs_osi.c +++ b/src/afs/afs_osi.c @@ -490,6 +490,10 @@ void afs_osi_Free(void *x, size_t asize) #endif } +void afs_osi_FreeStr(char *x) +{ + afs_osi_Free(x, strlen(x) + 1); +} /* ? is it moderately likely that there are dirty VM pages associated with * this vnode? diff --git a/src/afs/afs_prototypes.h b/src/afs/afs_prototypes.h index 267f45ed2..8c8163799 100644 --- a/src/afs/afs_prototypes.h +++ b/src/afs/afs_prototypes.h @@ -156,7 +156,6 @@ extern struct afs_q CellLRU; extern afs_rwlock_t afs_xcell; extern afs_int32 afs_cellindex; extern afs_uint32 afs_nextCellNum; -extern int afs_strcasecmp(register char *s1, register char *s2); extern afs_int32 afs_NewCell(char *acellName, register afs_int32 *acellHosts, int aflags, char *linkedcname, u_short fsport, u_short vlport, int timeout, char *aliasFor); extern struct cell *afs_GetCell(register afs_int32 acell, afs_int32 locktype); @@ -366,12 +365,15 @@ extern struct afs_exporter *afs_nfsexported; extern struct afs_exporter *afs_nfsexporter; /* afs_osi.c */ +extern afs_lock_t afs_ftf; extern void afs_osi_Invisible(void); extern void afs_osi_RxkRegister(void); extern void afs_osi_MaskSignals(void); extern void afs_osi_UnmaskRxkSignals(void); extern void *afs_osi_Alloc(size_t x); extern void *afs_osi_Alloc_NoSleep(size_t x); +extern void afs_osi_Free(void *x, size_t asize); +extern void afs_osi_FreeStr(char *x); extern void osi_Init(void); extern int osi_Active(register struct vcache *avc); extern void osi_FlushPages(register struct vcache *avc, struct AFS_UCRED *credp); @@ -399,10 +401,6 @@ extern afs_uint32 afs_get_pag_from_groups(gid_t g0a, gid_t g1a); extern void afs_get_groups_from_pag(afs_uint32 pag, gid_t *g0p, gid_t *g1p); extern afs_int32 PagInCred(const struct AFS_UCRED *cred); -/* afs_osi.c */ -extern afs_lock_t afs_ftf; -extern void afs_osi_Free(void *x, size_t asize); - /* afs_osi_alloc.c */ extern afs_int32 afs_preallocs; extern afs_lock_t osi_fsplock; @@ -623,6 +621,8 @@ extern void afs_SetPrimary(register struct unixuser *au, register int aflag); /* afs_util.c */ extern char *afs_cv2string(char *ttp, afs_uint32 aval); +extern int afs_strcasecmp(register char *s1, register char *s2); +extern char *afs_strdup(char *s); extern void print_internet_address(char *preamble, struct srvAddr *sa, char *postamble, int flag); extern afs_int32 afs_data_pointer_to_int32(const void *p); diff --git a/src/afs/afs_util.c b/src/afs/afs_util.c index 3c2a6d7a2..f507e8b9b 100644 --- a/src/afs/afs_util.c +++ b/src/afs/afs_util.c @@ -69,6 +69,35 @@ char *afs_cv2string(char *ttp, afs_uint32 aval) } /*afs_cv2string*/ +int afs_strcasecmp(char *s1, char *s2) +{ + while (*s1 && *s2) { + char c1, c2; + + c1 = *s1++; + c2 = *s2++; + if (c1 >= 'A' && c1 <= 'Z') c1 += 0x20; + if (c2 >= 'A' && c2 <= 'Z') c2 += 0x20; + if (c1 != c2) + return c1-c2; + } + + return *s1 - *s2; +} + +char *afs_strdup(char *s) +{ + char *n; + int cc; + + cc = strlen(s) + 1; + n = (char *) afs_osi_Alloc(cc); + if (n) + memcpy(n, s, cc); + + return n; +} + void print_internet_address(char *preamble, struct srvAddr *sa, char *postamble, int flag) { -- 2.39.5