--- /dev/null
+/* Roast+ License
+
+// ### C compilable ###
+
+// Safe\8cn\8aÖ\90\94 (\83o\83b\83t\83@\83I\81[\83o\81[\83\89\83\93\96h\8e~)
+// - \83o\83b\83t\83@\82ð\89z\82¦\82æ\82¤\82Æ\82µ\82½\8fê\8d\87\82Í\81A\94[\82Ü\82è\90Ø\82ç\82È\82©\82Á\82½\95¶\8e\9a\97ñ\82ð\90Ø\82è\8eÌ\82Ä\82Ü\82·\81B
+*/
+#ifndef __SFJP_OPENMGL_roast_bufsafe_H__
+#define __SFJP_OPENMGL_roast_bufsafe_H__
+
+#include <stdio.h>
+#include <string.h>
+#include "roast_common.h"
+#include "roast_str.h"
+
+
+/*////////////////////////////////////////////////////////////////*/
+
+/* \95¶\8e\9a\97ñ\83o\83b\83t\83@\82Ì\8dÅ\8cã\82ð\0\82É\82·\82é\81B */
+#define ROAST_STR_ZTERM(STR,BUFSIZE) STR[BUFSIZE-1] = '\0'
+#define ROAST_STR_ZERO_TERM(STR,BUFSIZE) ROAST_STR_ZTERM(STR,BUFSIZE) /* alias to ROAST_STR_ZTERM */
+
+
+/*////////////////////////////////////////////////////////////////*/
+
+/* strcpy\82Ì\83Z\81[\83t\94Å */
+#define roast_safe_strcpy(dest,src,dest_memsize) \
+ (ROAST_STR_ZTERM(dest,dest_memsize), \
+ strncpy( dest, src, dest_memsize-1 ))
+
+#define roast_safe_strcat(dest,src,dest_memsize) \
+ (ROAST_STR_ZTERM(dest,dest_memsize), \
+ dest_memsize-1 - strlen(dest) >= 0 ? \
+ strncat( dest, src, dest_memsize-1 - strlen(dest) ) : dest)
+
+/*#define roast_safe_strcat(dest,src,dest_memsize) \
+ ROAST_STR_ZTERM(dest,dest_memsize), \
+ int copy_size = dest_memsize-1 - strlen(dest), \
+ if ( copy_size < 0 ) \
+ copy_size = 0, \
+ strncat( dest, src, copy_size )*/
+
+#define roast_safe_strccpy(dest,src,c,dest_memsize) \
+ (ROAST_STR_ZTERM(dest,dest_memsize), \
+ roast_strcncpy( dest, src, c, dest_memsize-1 ))
+
+
+/* Auto Sizeof */
+#define ROAST_SAFE_STRCPY_AS(DEST,SRC) roast_safe_strcpy(DEST,SRC,sizeof(DEST))
+#define ROAST_SAFE_STRCAT_AS(DEST,SRC) roast_safe_strcat(DEST,SRC,sizeof(DEST))
+#define ROAST_SAFE_STRCCPY_AS(DEST,SRC,C) roast_safe_strccpy(DEST,SRC,C,sizeof(DEST))
+
+
+/*////////////////////////////////////////////////////////////////*/
+
+
+/* \88À\91S\82È delete, delete[], Release() */
+#define ROAST_SAFE_DELETE(p) { if ( p != NULL ) { delete p; p=NULL; }}
+#define ROAST_SAFE_DELETE_ARY(p) { if ( p != NULL ) { delete []p; p=NULL; }}
+#define ROAST_SAFE_DELETE_ARRAY(p) { if ( p != NULL ) { delete []p; p=NULL; }}
+#define ROAST_SAFE_FREE(p) { if ( p != NULL ) { free(p); p=NULL; }}
+#define ROAST_SAFE_RELEASE(p) { if ( p != NULL ) { (p)->Release(); (p)=NULL; }}
+
+
+/*#define ROAST_SAFE_NEW(p) { if ( p != NULL ) { delete p; p=NULL; }}*/
+
+
+/*//////////////////////////////////////////////////////////////////////*/
+/*//////////////////////////////////////////////////////////////////////*/
+/*//////////////////////////////////////////////////////////////////////*/
+/*//////////////////////////////////////////////////////////////////////*/
+/*//////////////////////////////////////////////////////////////////////*/
+
+
+
+#ifdef ROAST_WIN32
+
+ /*///////////////////////////////////////////////////////////////////
+ //
+ // VC\82Ì_snprintf\82ÍC99\82Ìsnprintf\82Æ\8b\93\93®\82ª\88á\82¤\82Ì\82Å\81A\82±\82ê\82ð\8f\80\8b\92\82³\82¹\82é
+ //
+ /////////////////////////////////////////////////////////////////////*/
+
+ __ROAST_EXTERN_C_START
+
+ int roast_vc_vsnprintf_conformed_c99(
+ char *str, size_t size, const char *format, va_list ap );
+
+ int roast_vc_snprintf_conformed_c99(
+ char *str, size_t size, const char *format, ... );
+
+ __ROAST_EXTERN_C_END
+
+ #define roast_vsnprintf roast_vc_vsnprintf_conformed_c99
+ #define roast_snprintf roast_vc_snprintf_conformed_c99
+
+#else /* UNIX/Linux */
+
+ #define roast_vsnprintf vsnprintf
+ #define roast_snprintf snprintf
+
+#endif
+
+/*
+
+// snprintf \82ð roast_snprintf \82É\82µ\82¿\82á\82¤
+// \81i\81¦ _ROAST_NOT_SNPRINTF_REPLACES \82ðdefine\82·\82é\8e\96\82É\89ñ\94ð\89Â\94\\81j
+
+#ifndef _ROAST_NOT_SNPRINTF_REPLACES
+ #define vsnprintf roast_vsnprintf
+ #define snprintf roast_snprintf
+#endif//_ROAST_NOT_SNPRINTF_REPLACES
+
+*/
+
+/*////////////////////////////////////////////////////////////////*/
+
+#ifdef _ROAST_REMOVE_MACRO_NS
+
+ #define STR_ZTERM ROAST_STR_ZTERM
+ #define STR_ZERO_TERM ROAST_STR_ZERO_TERM
+
+ #define safe_strcpy roast_safe_strcpy
+ #define safe_strcat roast_safe_strcat
+ #define safe_strccpy roast_safe_strccpy
+
+ #define SAFE_STRCPY_AS ROAST_SAFE_STRCPY_AS
+ #define SAFE_STRCAT_AS ROAST_SAFE_STRCAT_AS
+ #define SAFE_STRCCPY_AS ROAST_SAFE_STRCCPY_AS
+
+/*
+ #define STR_ZTERM(DEST,SRC) ROAST_STR_ZTERM(DEST,SRC)
+ #define STR_ZERO_TERM(DEST,SRC) ROAST_STR_ZERO_TERM(DEST,SRC)
+
+ #define safe_strcpy(DEST,SRC,BUFSIZE) roast_safe_strcpy(DEST,SRC,BUFSIZE)
+ #define safe_strcat(DEST,SRC,BUFSIZE) roast_safe_strcat(DEST,SRC,BUFSIZE)
+ #define safe_strccpy(DEST,SRC,C,BUFSIZE) roast_safe_strccpy(DEST,SRC,C,BUFSIZE)
+
+ #define SAFE_STRCPY_AS(DEST,SRC) ROAST_SAFE_STRCPY_AS(DEST,SRC)
+ #define SAFE_STRCAT_AS(DEST,SRC) ROAST_SAFE_STRCAT_AS(DEST,SRC)
+ #define SAFE_STRCCPY_AS(DEST,SRC,C) ROAST_SAFE_STRCCPY_AS(DEST,SRC,C)
+*/
+
+ #ifndef _ROAST_NOT_SNPRINTF_REPLACES
+ #define vsnprintf roast_vsnprintf
+ #define snprintf roast_snprintf
+ #endif/*_ROAST_NOT_SNPRINTF_REPLACES*/
+
+
+
+ #ifndef SAFE_DELETE
+ #define SAFE_DELETE ROAST_SAFE_DELETE
+ #endif
+
+ #ifndef SAFE_DELETE_ARY
+ #define SAFE_DELETE_ARY ROAST_SAFE_DELETE_ARY
+ #endif
+
+ #ifndef SAFE_DELETE_ARRAY
+ #define SAFE_DELETE_ARRAY ROAST_SAFE_DELETE_ARRAY
+ #endif
+
+ #ifndef SAFE_RELEASE
+ #define SAFE_RELEASE ROAST_SAFE_RELEASE
+ #endif
+
+#endif
+
+/*
+namespace roast{
+}
+*/
+
+#endif/*__SFJP_OPENMGL_roast_bufsafe_H__*/
--- /dev/null
+/* Roast+ License v0.1
+
+// ### C compilable ###
+*/
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include "roast_str.h"
+#include "roast_bufsafe.h"
+
+__ROAST_EXTERN_C_START
+
+
+/* roast_strccpy */
+char* roast_strccpy( char* to, const char* from, const char c )
+{
+ char *to_pre = to;
+
+ /*for( ; *from != c; from++, to++ )*/
+ for( ; *from != c && *from != '\0'; from++, to++ ) /* \82È\82ñ\82Å\93ü\82Á\82Ä\82È\82¢\82ñ\82¾\82Á\82¯\81H\81i\82¢\82Â\82©\82Íc\82É\82È\82é\82©\82ç\81H */
+ *to = *from;
+
+ *to = '\0';
+
+ return to_pre;
+}
+
+
+
+/* roast_strcncpy */
+/* \8cÃ\82¢\83o\81[\83W\83\87\83\93\81Bstrncpy\82Æ\82©\82Æ\8b\93\93®\82ª\88á\82¤\81B\94p\8e~ */
+char* roast_strcncpy_Old1( char* to, const char* from, const char c, int n )
+{
+ char *to_pre = to;
+ const char* p_to_buflast = to + n - 1;
+
+ for( ; *from != c && *from != '\0' && to != p_to_buflast; from++, to++ )
+ *to = *from;
+
+ /*int i=0;
+ for( ; *from != c && *from != '\0' && i < n; from++, to++, i++ )
+ *to = *from;*/
+
+ *to = '\0';
+
+ return to_pre;
+}
+
+
+/* roast_strcncpy */
+char* roast_strcncpy( char* to, const char* from, const char c, int n )
+{
+ char *to_pre = to;
+ const char* p_to_buflast = to + n;
+
+ for( ; *from != c && *from != '\0' && to < p_to_buflast; from++, to++ )
+ *to = *from;
+
+ if ( *from != c )
+ {
+ for( ; to < p_to_buflast; to++ )
+ *to = '\0';
+ }
+
+ return to_pre;
+}
+
+/* roast_strchrrpc */
+char* roast_strchrrpc( char* buf, char from, char to )
+{
+ char *p = buf;
+
+ for(; *p != '\0' ; p++ )
+ {
+ if ( *p == from )
+ *p = to;
+ }
+
+ return buf;
+}
+
+/*********************************************************************************************************/
+
+
+/* roast_strrpc */
+/*char* roast_strrpc( char* target_str, size_t str_bufsize, const char* keyword_from, const char* keyword_to )
+{
+ return str;
+}*/
+
+
+
+/* \95¶\8e\9a\97ñ\92u\8a·\8aÖ\90\94\81B\93ü\97Í\8fo\97Í\83o\83b\83t\83@\82ª\93¯\82¶\8e\96\82É\82æ\82é\92x\82¢\83o\81[\83W\83\87\83\93\81B\94p\8e~ */
+char* roast_strrpc1( char* buf, unsigned int bufsize, const char* find_str, const char* new_str )
+//char* roast_strrpc( char *str, const char *target_str, const char *new_str, size_t size )
+{
+ const int find_len = strlen(find_str); /* find_str\82Ì\95¶\8e\9a\97ñ\92·\82ð\97\\82ß\8cv\8eZ\82µ\82Ä\82¨\82\81i\89½\89ñ\82à\8eg\82¤\82Ì\82Å\81j*/
+ const int new_len = strlen(new_str); /* new_str\82Ì\95¶\8e\9a\97ñ\92·\82ð\97\\82ß\8cv\8eZ\82µ\82Ä\82¨\82\81i\89½\89ñ\82à\8eg\82¤\82Ì\82Å\81j*/
+ const int diff_len = new_len - find_len; /* find_str\82Ænew_str\82Ì\8d·\95ª\95¶\8e\9a\97ñ\92·\82ð\97\\82ß\8cv\8eZ\82µ\82Ä\82¨\82\81i\89½\89ñ\82à\8eg\82¤\82Ì\82Å\81j*/
+
+ char *p = buf; /* \8c»\8dÝ\88Ê\92u\82ð\8bL\89¯\82·\82é\82½\82ß\82Ì\83|\83C\83\93\83^\81i\95Ï\93®\81j*/
+ int buf_len = strlen(buf); /* \8c»\8dÝ\82Ì\83o\83b\83t\83@\95¶\8e\9a\97ñ\92·\81i\95Ï\93®\81j*/
+ /*int p_len = strlen(buf); * p\82©\82ç\82Ì\95¶\8e\9a\97ñ\92·\81i\95Ï\93®\81j-> \91å\82µ\82Ä\91¬\93x\89ü\91P\82³\82ê\82È\82³\82»\82¤\82¾\82Á\82½\82Ì\82Å\82â\82ß\82½ */
+
+ /*//////////////////////////////////////////////////////////////////////////////////////////////*/
+
+
+ /* \8c\9f\8dõ\83\8b\81[\83v */
+ while( NULL != (p = strstr(p, find_str)) )
+ {
+ /* \92u\8a·\82·\82é\82Ì\82É\8f\\95ª\82È\83\81\83\82\83\8a\82ª\82 \82é\82©\81H */
+ /*if ( strlen(p) + diff_len > bufsize-1 ) */
+ if ( buf_len + diff_len > (int)bufsize-1 ) /* strlen()\82ð\97p\82¢\82È\82¢\8e\96\82É\82æ\82è\82æ\82è\8d\82\91¬\82É\81I\81c\82É\82È\82Á\82½\94¤\81B\81B\81B*/
+ {
+ /* \91«\82è\82È\82¢\82Ì\82Å\92\86\92f\81B\82Æ\8c¾\82¤\8ed\97l\82É\82·\82é\82©\81c\82Æ\82è\82 \82¦\82¸\81c */
+ return NULL;
+ }
+
+
+ /* \92u\8a·\82É\82æ\82è\88È\8d~\82Ì\95¶\8e\9a\97ñ\88Ê\92u\82ª\82¸\82ê\82é\8fê\8d\87(diff_len\82ª0\88È\8aO)\82Í\82¸\82ç\82µ\82Ä\82¨\82 */
+ /* \81i\88ø\90\94\8cv\8eZ\81A\8aÖ\90\94\8cÄ\82Ñ\8fo\82µ\82¾\82¯\82Å\82à\8c\8b\8d\\82È\83I\81[\83o\81[\83w\83b\83h\82É\82È\82é\82Æ\8ev\82¤\82ñ\82Å\81Aif\82Å\88Í\82Á\82½\95û\82ª\8cø\97¦\97Ç\82¢\82Æ\8ev\82¤\82ñ\82¾\82º\81B\81j */
+ if ( diff_len != 0 )
+ memmove( p + new_len, p + find_len, (buf_len-(p-buf)) - find_len + 1 ); /* strlen()\82ð\97p\82¢\82È\82¢\8e\96\82É\82æ\82è\82æ\82è\8d\82\91¬\82É\81I\81c\82É\82È\82Á\82½\94¤\81B\81B\81B*/
+ /*memmove( p + new_len, p + find_len, strlen(p) - find_len + 1 ); */
+ /*memmove( p, p + diff_len, strlen(p) + 1 ); \81ª\82Ì\95û\82ª\97]\95ª\82È\83R\83s\81[\8ds\82í\82È\82¢\82Ì\82Å\8d\82\91¬\82©\81E\81E\81E\81B\82½\82¾\82µ\88ø\90\94\8cv\8eZ\82Ì\83R\83X\83g\82Í\82 \82é\82¯\82Ç\82È\81B*/
+
+
+ /* \95¶\8e\9a\97ñ\82ð\8fã\8f\91\82«\82·\82é */
+ memcpy( p, new_str, new_len );
+
+ /* \83|\83C\83\93\83^\82ðnew_len\95ª\90i\82ß\82é */
+ p += new_len;
+
+ /* buf_len\82à\8dX\90V */
+ buf_len += diff_len;
+ }
+
+ return buf;
+}
+
+
+/************* V2 : Fast Version *****************/
+/* \93ü\97Í\8fo\97Í\83o\83b\83t\83@\82ð\95Ê\81X\82Æ\82·\82é\8e\96\82É\82æ\82è\8d\82\91¬\82É\82È\82è\82Ü\82µ\82½\81B */
+/* \81\96\82±\82Á\82¿\82Í\83o\83b\83t\83@\83T\83C\83Y\82ð\83`\83F\83b\83N\82µ\82È\82¢\83o\81[\83W\83\87\83\93\82Å\82·\81B\83o\83b\83t\83@\83T\83C\83Y\82ð\83`\83F\83b\83N\82·\82é\82Ì\82Í roast_safe_strrpc2() \82Å\82· */
+char* roast_strrpc2( char* outbuf, const char* inbuf, const char* find_str, const char* rpc_str )
+{
+ const unsigned int find_len = strlen(find_str); /* find_str\82Ì\95¶\8e\9a\97ñ\92·\82ð\97\\82ß\8cv\8eZ\82µ\82Ä\82¨\82\81i\89½\89ñ\82à\8eg\82¤\82Ì\82Å\81j*/
+ const unsigned int rpcstr_len = strlen(rpc_str); /* rpc_str\82Ì\95¶\8e\9a\97ñ\92·\82ð\97\\82ß\8cv\8eZ\82µ\82Ä\82¨\82\81i\89½\89ñ\82à\8eg\82¤\82Ì\82Å\81j*/
+
+ const char *p_from = inbuf;
+ const char *p_from_next = NULL;
+ char *p_to = outbuf;
+ unsigned int copy_len = 0; /* \83R\83s\81[\92·\82ð\88ê\8e\9e\93I\82É\95Û\91¶\82·\82é\95Ï\90\94 */
+
+ /*//////////////////////////////////////////////////////////////////////////////////////////////*/
+
+#define __ROAST_STRRPC__STRNCPY(FROM, COPY_LEN) strncpy(p_to, FROM, COPY_LEN);
+/*#define __ROAST_STRRPC__STRNCPY(FROM, LEN) { \
+ if ( (p_to+LEN) > p_to_last ){ \
+ strncpy(p_to, FROM, p_to_last - p_to - 1 ); \
+ *(p_to_last-1) = '\0'; \
+ break; \
+ }else{ \
+ strncpy(p_to, FROM, LEN); \
+ }}*/
+
+ for(;;)
+ {
+ /* \8c\9f\8dõ */
+ p_from_next = strstr(p_from, find_str);
+
+
+ /* \92u\8a·\91Î\8fÛ\82 \82è */
+ if ( p_from_next != NULL )
+ {
+ /* \92u\8a·\82·\82é\95¶\8e\9a\97ñ\82Ì\91O\82Ü\82Å\82ðp_to\82É\83R\83s\81[ */
+ copy_len = p_from_next - p_from;
+ /*strncpy(p_to, p_from, copy_len);*/
+ __ROAST_STRRPC__STRNCPY(p_from, copy_len);
+ p_to += copy_len;
+
+ /* \92u\8a·\8cã\82Ì\95¶\8e\9a\97ñ\82ð\83R\83s\81[ */
+ /*strncpy(p_to, rpc_str, rpcstr_len);*/
+ __ROAST_STRRPC__STRNCPY(rpc_str, rpcstr_len);
+ p_to += rpcstr_len;
+
+ /* p_from\82Ì\83I\83t\83Z\83b\83g\82ðp_from_next\81{find_len\82É */
+ p_from = p_from_next + find_len;
+ }
+
+
+ /* \82à\82¤\82±\82ê\88È\8fã\92u\8a·\91Î\8fÛ\82Í\82È\82¢\82æ */
+ else
+ {
+ /* \8cã\89½\95¶\8e\9a\83R\83s\81[\82·\82ê\82Î\82¢\82¢\82ñ\82¾ */
+ copy_len = strlen(p_from);
+
+ /* \94c\88¬\81B\83R\83s\81[\82·\82é\82æ\81B\81i'\0'\8aÜ\82ß\82Ä\81j */
+ /*strncpy(p_to, p_from, n+1);*/
+ __ROAST_STRRPC__STRNCPY(p_from, copy_len+1);
+
+ /* \8fI\82í\82è\82Á\82·\81B\8fI\97¹\82Á\82·\81B\94²\82¯\82é\82Á\82· */
+ break;
+ }
+ }
+#undef __ROAST_STRRPC__STRNCPY
+ return outbuf;
+}
+
+
+/* safe\83o\81[\83W\83\87\83\93\81i\83o\83b\83t\83@\83T\83C\83Y\82ð\83`\83F\83b\83N\81j */
+char* roast_safe_strrpc2( char* outbuf, unsigned int outbuf_size, const char* inbuf, const char* find_str, const char* rpc_str )
+{
+ const unsigned int find_len = strlen(find_str); /* find_str\82Ì\95¶\8e\9a\97ñ\92·\82ð\97\\82ß\8cv\8eZ\82µ\82Ä\82¨\82\81i\89½\89ñ\82à\8eg\82¤\82Ì\82Å\81j*/
+ const unsigned int rpcstr_len = strlen(rpc_str); /* rpc_str\82Ì\95¶\8e\9a\97ñ\92·\82ð\97\\82ß\8cv\8eZ\82µ\82Ä\82¨\82\81i\89½\89ñ\82à\8eg\82¤\82Ì\82Å\81j*/
+
+ const char *p_from = inbuf;
+ const char *p_from_next = NULL;
+ char *p_to_last = outbuf + outbuf_size;
+ char *p_to = outbuf;
+ unsigned int copy_len = 0; /* \83R\83s\81[\92·\82ð\88ê\8e\9e\93I\82É\95Û\91¶\82·\82é\95Ï\90\94 */
+
+ /*//////////////////////////////////////////////////////////////////////////////////////////////*/
+
+//#define __ROAST_STRRPC__STRNCPY(FROM, COPY_LEN) strncpy(p_to, FROM, COPY_LEN);
+#define __ROAST_STRRPC__STRNCPY(FROM, LEN) { \
+ if ( (p_to+LEN) > p_to_last ){ \
+ strncpy(p_to, FROM, p_to_last - p_to - 1 ); \
+ *(p_to_last-1) = '\0'; \
+ break; \
+ }else{ \
+ strncpy(p_to, FROM, LEN); \
+ }}
+
+ for(;;)
+ {
+ /* \8c\9f\8dõ */
+ p_from_next = strstr(p_from, find_str);
+
+
+ /* \92u\8a·\91Î\8fÛ\82 \82è */
+ if ( p_from_next != NULL )
+ {
+ /* \92u\8a·\82·\82é\95¶\8e\9a\97ñ\82Ì\91O\82Ü\82Å\82ðp_to\82É\83R\83s\81[ */
+ copy_len = p_from_next - p_from;
+ /*strncpy(p_to, p_from, copy_len);*/
+ __ROAST_STRRPC__STRNCPY(p_from, copy_len);
+ p_to += copy_len;
+
+ /* \92u\8a·\8cã\82Ì\95¶\8e\9a\97ñ\82ð\83R\83s\81[ */
+ /*strncpy(p_to, rpc_str, rpcstr_len);*/
+ __ROAST_STRRPC__STRNCPY(rpc_str, rpcstr_len);
+ p_to += rpcstr_len;
+
+ /* p_from\82Ì\83I\83t\83Z\83b\83g\82ðp_from_next\81{find_len\82É */
+ p_from = p_from_next + find_len;
+ }
+
+
+ /* \82à\82¤\82±\82ê\88È\8fã\92u\8a·\91Î\8fÛ\82Í\82È\82¢\82æ */
+ else
+ {
+ /* \8cã\89½\95¶\8e\9a\83R\83s\81[\82·\82ê\82Î\82¢\82¢\82ñ\82¾ */
+ copy_len = strlen(p_from);
+
+ /* \94c\88¬\81B\83R\83s\81[\82·\82é\82æ\81B\81i'\0'\8aÜ\82ß\82Ä\81j */
+ /*strncpy(p_to, p_from, n+1);*/
+ __ROAST_STRRPC__STRNCPY(p_from, copy_len+1);
+
+ /* \8fI\82í\82è\82Á\82·\81B\8fI\97¹\82Á\82·\81B\94²\82¯\82é\82Á\82· */
+ break;
+ }
+ }
+#undef __ROAST_STRRPC__STRNCPY
+
+ return outbuf;
+}
+
+
+/* \95¶\8e\9a\97ñ\92·\82³\82ª\92Z\82\82È\82é\8e\96\82ª\95ª\82©\82é\8fê\8d\87\82Ì\82Ý\8eg\82Á\82Ä\89º\82³\82¢\81B */
+/* Result string to short only usable. */
+char* roast_strrpc_toshort( char* iobuf, const char* find_str, const char* rpc_str )
+{
+ const char* inbuf = iobuf;
+ char* outbuf = (char*)malloc( strlen(iobuf)+1 );
+ roast_strrpc( outbuf, inbuf, find_str, rpc_str );
+ strcpy( iobuf, outbuf );
+ free(outbuf);
+ return iobuf;
+}
+
+
+/* \93ü\8fo\97Í\83o\83b\83t\83@\8b¤\92Ê\83o\81[\83W\83\87\83\93\81B\8eÀ\8dÛ\82É\82Í\88ê\8e\9e\83o\83b\83t\83@\82ð\8dì\82Á\82Ä\82â\82Á\82Ä\82é\81B */
+/* I/O Buffer shared version. */
+char* roast_safe_strrpc_bufshare( char* iobuf, unsigned int buf_size, const char* find_str, const char* rpc_str )
+{
+ const char* inbuf = iobuf;
+ char* outbuf = (char*)malloc( buf_size );
+ roast_safe_strrpc( outbuf, buf_size, inbuf, find_str, rpc_str );
+ strcpy( iobuf, outbuf );
+ free(outbuf);
+ return iobuf;
+}
+
+
+/* roast_strrpc1\82ð\96³\97\9d\82â\82è\8eg\82¤\83o\81[\83W\83\87\83\93
+char* roast_strrpc( char* outbuf, unsigned int outbuf_size, const char* inbuf, const char* find_str, const char* rpc_str )
+{
+ roast_safe_strcpy(outbuf, inbuf, outbuf_size);
+
+ return roast_strrpc1(outbuf, outbuf_size, find_str, rpc_str);
+}
+*/
+
+__ROAST_EXTERN_C_END