You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by dl...@apache.org on 2007/08/13 00:21:44 UTC

svn commit: r565180 - /harmony/enhanced/sandbox/bootjvm/bootJVM/jvm/src/portable_libc.c

Author: dlydick
Date: Sun Aug 12 15:21:43 2007
New Revision: 565180

URL: http://svn.apache.org/viewvc?view=rev&rev=565180
Log:
Added portable strstr(3), strncpy(3), and isalpha(3).

Modified:
    harmony/enhanced/sandbox/bootjvm/bootJVM/jvm/src/portable_libc.c

Modified: harmony/enhanced/sandbox/bootjvm/bootJVM/jvm/src/portable_libc.c
URL: http://svn.apache.org/viewvc/harmony/enhanced/sandbox/bootjvm/bootJVM/jvm/src/portable_libc.c?view=diff&rev=565180&r1=565179&r2=565180
==============================================================================
--- harmony/enhanced/sandbox/bootjvm/bootJVM/jvm/src/portable_libc.c (original)
+++ harmony/enhanced/sandbox/bootjvm/bootJVM/jvm/src/portable_libc.c Sun Aug 12 15:21:43 2007
@@ -174,11 +174,16 @@
  *
  * @attention This function @b requires freeing of a result pointer
  *            with @link #HEAP_FREE_DATA() HEAP_FREE_DATA()@endlink
- *            when it is no longer needed.
+ *            when it is no longer needed.  <i>It does @b NOT return
+ *            an integer like @b stat(2) returns!</i>
  *
  *
  * Notice that this function returns an (@link #rvoid rvoid@endlink *)
- * with its result.
+ * with its result instead of an integer.  The reason for this, even
+ * though it is returned as an @link #rvoid rvoid@endlink pointer,
+ * is for that pointer to be passed to @link
+   #portable_stat_get_st_size() portable_stat_get_st_size()@endlink
+ * if desired to return information about the file.
  *
  * @param path   Path name of file, relative or absolute.
  *
@@ -703,6 +708,36 @@
 
 
 /*!
+ * @brief Portable replacement for @c @b strstr(3) library function
+ *
+ *
+ * @param s1  First null-terminated string to evaluate
+ *
+ * @param s2  Second null-terminated string to evaluate
+ *
+ *
+ * @returns pointer into @b s1 of first occurrence of @b s2 , not
+ *          including the null termination character of @b s2 in that
+ *          comparison.  Return @link #rnull rnull@endlink if not found.
+ *          If @b s2 is an empty string (of zero length), then
+ *          return @b s1 .
+ *
+ */
+rchar *portable_strstr(const rchar *s1, const rchar *s2)
+{
+    ARCH_FUNCTION_NAME(portable_strstr);
+
+    char   *s1local = (char *) s1;
+    char   *s2local = (char *) s2;
+
+    char *rc = strstr(s1local, s2local);
+
+    return((rchar *) rc);
+
+} /* END of portable_strstr() */
+
+
+/*!
  * @brief Portable replacement for @c @b strlen(3) library function
  *
  *
@@ -781,6 +816,36 @@
 } /* END of portable_strcpy() */
 
 
+/*!
+ * @brief Portable replacement for @c @b strncpy(3) library function
+ *
+ *
+ * @param[out] s1  Destination null-terminated string buffer
+ *                 into which @c @b s2 contents are copied
+ *
+ * @param[in] s2   Source [potentially] null-terminated string to
+ *                 copy into @c @b s1 buffer
+ *
+ * @param[in] n    Number of characters to copy.
+ *
+ * @returns @c @b s1
+ *
+ */
+rchar *portable_strncpy(rchar *s1, const rchar *s2, rint n)
+{
+    ARCH_FUNCTION_NAME(portable_strncpy);
+
+    char   *s1local = (char *) s1;
+    char   *s2local = (char *) s2;
+    size_t  nlocal  = (size_t) n;
+
+    char *rc = strncpy(s1local, s2local, nlocal);
+
+    return((rchar *) rc);
+
+} /* END of portable_strncpy() */
+
+
 /*@} */ /* End of grouped definitions */
 
 /*!
@@ -877,6 +942,32 @@
     return((rint) rc);
 
 } /* END of portable_isspace() */
+
+
+/*!
+ * @brief Portable replacement for @c @b isalpha(3) library function
+ *
+ *
+ * @param c  Character to evaluate
+ *
+ *
+ * @returns non-zero if @c @b c is an alphabetic character @b a
+ *          through @b z , either upper or lower case,
+ *          otherwise 0.  If @c @b c is not in the domain of
+ *          comparison, the result is undefined.
+ *
+ */
+rint portable_isalpha(rint c)
+{
+    ARCH_FUNCTION_NAME(portable_isalpha);
+
+    int clocal = (int) c;
+
+    int rc = isalpha(clocal);
+
+    return((rint) rc);
+
+} /* END of portable_isalpha() */
 
 
 /*@} */ /* End of grouped definitions */