]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Add two useful functions for string operations: afs_strdup() and
authorNickolai Zeldovich <kolya@mit.edu>
Thu, 22 Aug 2002 18:01:51 +0000 (18:01 +0000)
committerNickolai Zeldovich <kolya@mit.edu>
Thu, 22 Aug 2002 18:01:51 +0000 (18:01 +0000)
afs_osi_FreeStr().  Will be used by an upcoming patch.

src/afs/UKERNEL/afs_usrops.c
src/afs/afs_cell.c
src/afs/afs_osi.c
src/afs/afs_prototypes.h
src/afs/afs_util.c

index e18c40b75db6dcab8920d5cb0c142b67fcda4e54..6043a637e8fa9d3d0eed54dc2ff9695fc3d6d83a 100644 (file)
@@ -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);
index ba13ea9c43af5f6b61ee8fc79852e388d716ff67..058b42f167bbc2e7f3a55a89386930cfeef42bf3 100644 (file)
@@ -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)
 {
index 81db07afe34681dafceb5a67676352f81613ce8e..28714f70e0a3d92e7a0fc6fc83bfda909e7f4b0e 100644 (file)
@@ -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?
index 267f45ed21d8b675e31b8d0103ade330c871a406..8c81637998cde5429bd0c153a28c1ef7a7e7c315 100644 (file)
@@ -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);
index 3c2a6d7a2c2a3842790538bf064f3dcf496ca1b1..f507e8b9be4d504e61f7c7f8836a400f1c27725c 100644 (file)
@@ -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)
 {