+++ /dev/null
-\r
-#include "core.h"\r
-\r
-uint system_seed;\r
-\r
-#define RAND_A ((10 << 3) + 5)\r
-#define RAND_B ((15 << 1) + 1)\r
-#define RAND_C (1 << 24)\r
-\r
-void srand(uint seed)\r
-{\r
- system_seed = seed;\r
- return;\r
-}\r
-\r
-uint rand(void)\r
-{\r
- uint seed2;\r
-\r
- system_seed = ((system_seed * RAND_A) + RAND_B) % RAND_C;\r
- seed2 = ((system_seed * RAND_A) + RAND_B) % RAND_C;\r
- system_seed = (system_seed & 0xff5688) | ((seed2 >> 8) & 0xa977) | ((system_seed & 0x000ff000) << 12);\r
- return system_seed;\r
-}\r
-\r
-uint isqrt(uint n)\r
-{\r
- uint x;\r
-\r
-//Overflow Check\r
- if(n >= (uint)0xffff * (uint)0xffff){\r
- return 0xffff;\r
- }\r
-\r
- x = (1 << 15);\r
-\r
- if(n > x * x){\r
- x += (1 << 14);\r
- } else{\r
- x -= (1 << 14);\r
- }\r
- if(n > x * x){\r
- x += (1 << 13);\r
- } else{\r
- x -= (1 << 13);\r
- }\r
- if(n > x * x){\r
- x += (1 << 12);\r
- } else{\r
- x -= (1 << 12);\r
- }\r
- if(n > x * x){\r
- x += (1 << 11);\r
- } else{\r
- x -= (1 << 11);\r
- }\r
- if(n > x * x){\r
- x += (1 << 10);\r
- } else{\r
- x -= (1 << 10);\r
- }\r
- if(n > x * x){\r
- x += (1 << 9);\r
- } else{\r
- x -= (1 << 9);\r
- }\r
- if(n > x * x){\r
- x += (1 << 8);\r
- } else{\r
- x -= (1 << 8);\r
- }\r
- if(n > x * x){\r
- x += (1 << 7);\r
- } else{\r
- x -= (1 << 7);\r
- }\r
- if(n > x * x){\r
- x += (1 << 6);\r
- } else{\r
- x -= (1 << 6);\r
- }\r
- if(n > x * x){\r
- x += (1 << 5);\r
- } else{\r
- x -= (1 << 5);\r
- }\r
- if(n > x * x){\r
- x += (1 << 4);\r
- } else{\r
- x -= (1 << 4);\r
- }\r
- if(n > x * x){\r
- x += (1 << 3);\r
- } else{\r
- x -= (1 << 3);\r
- }\r
- if(n > x * x){\r
- x += (1 << 2);\r
- } else{\r
- x -= (1 << 2);\r
- }\r
- if(n > x * x){\r
- x += (1 << 1);\r
- } else{\r
- x -= (1 << 1);\r
- }\r
- if(n > x * x){\r
- x += (1 << 0);\r
- } else{\r
- x -= (1 << 0);\r
- }\r
-\r
- if(n > x * x){\r
- x++;\r
- }\r
- if(n < x * x){\r
- x--;\r
- }\r
-\r
- return x;\r
-}\r
-\r
-//\95¶\8e\9a\97ñ\82©\82ç\90\94\92l\82ð\90¶\90¬\82µ\82Ü\82·\81B\r
-//base=0:C\8c¾\8cê\82Ì\92è\90\94\95\\8bL\83\8b\81[\83\8b\82É\8f]\82¤\81B("0x..."=16, "0..."=8, else=10)\r
-//base=2-36(\90\94\8e\9a10+\83A\83\8b\83t\83@\83x\83b\83g26):\8ae\90\94\8e\9a\82ð\8aî\90\94\82Æ\82µ\82Ä\95¶\8e\9a\97ñ\82ð\97\9d\89ð\82µ\82æ\82¤\82Æ\82·\82é\81B\r
-//\83A\83\8b\83t\83@\83x\83b\83g\82Ì\91å\95¶\8e\9a\81E\8f¬\95¶\8e\9a\82Í\96â\82í\82È\82¢\81B\r
-//endptr=NULL\82à\89Â\81B\97L\8cø\82È\90\94\8e\9a\82ª\88ê\82Â\82à\82È\82¯\82ê\82Î\81A*endptr=s, retv=0\82Æ\82È\82é\81B\r
-//\8fo\97Í\82Ì\83I\81[\83o\81[\83t\83\8d\81[\82É\82Â\82¢\82Ä\82Í\8dl\97¶\82µ\82È\82¢\82Ì\82Å\92\8d\88Ó\81B\r
-//\8c»\8fó\82Å\82Í\95\89\90\94\82Í\88µ\82¦\82È\82¢(\83}\83C\83i\83X\8bL\8d\86\82Í\95Ï\8a·\95s\94\\82Æ\82³\82ê\82é)\r
-//s\82Ì\97á:"0xFEC375"(16), "0423"(8), "12345"(10)\r
-//\95¶\8e\9a\97ñ\91S\91Ì\82Ì\91O\82É\82Í\8bó\94\92\82ª\82 \82Á\82Ä\82à\96³\8e\8b\82³\82ê\82é\81B\90\94\8e\9a\95\94\95ª\8aJ\8en\8cã\82Í\8bó\94\92\82Í\95Ï\8a·\95s\94\\82Æ\82³\82ê\82é\81B\r
-//*endptr[0]==0x00\82Ì\82Æ\82«\81A\95¶\8e\9a\97ñs\82Ì\82·\82×\82Ä\82ª\95Ï\8a·\82³\82ê\82½\82±\82Æ\82ð\8e¦\82·\81B\r
-uint strtol(const uchar s[], uchar *endptr[], uint base)\r
-{\r
- uint i, v;\r
-\r
- v = 0;\r
-\r
- if(s == Null || base > 36 || base == 1){\r
- if(endptr != Null){\r
- *endptr = Null;\r
- }\r
- return 0;\r
- }\r
-\r
-//\8bó\94\92\82ð\93Ç\82Ý\94ò\82Î\82·\r
- for(i = 0; s[i] != 0x00; i++){\r
- if(s[i] != ' '){\r
- break;\r
- }\r
- }\r
-//base=0\82Ì\8e\9e\82Ì\8aî\90\94\8c\88\92è\r
- if(base == 0){\r
- if(s[i] == '0'){\r
- i++;\r
- if(s[i] == 'x'){\r
- base = 16;\r
- i++;\r
- } else{\r
- base = 8;\r
- }\r
- } else{\r
- base = 10;\r
- }\r
- }\r
-//\90\94\92l\95Ï\8a·\r
- for(; s[i] != 0x00; i++){\r
- if('0' <= s[i] <= '9' && s[i] - '0' < base){\r
- v *= base;\r
- v += s[i] - '0';\r
- } else if('A' <= s[i] <= 'Z' && s[i] - 'A' + 10 < base){\r
- v *= base;\r
- v += s[i] - 'A' + 10;\r
- } else if('a' <= s[i] <= 'z' && s[i] - 'a' + 10 < base){\r
- v *= base;\r
- v += s[i] - 'a' + 10;\r
- } else{\r
- break;\r
- }\r
- }\r
- if(endptr != Null){\r
- *endptr = (uchar *)&s[i];\r
- }\r
- return v;\r
-}\r
-\r
-bool CFunction_CompareStrings(const uchar s1[], const uchar s2[])\r
-{\r
- uint i;\r
-\r
- for(i = 0; s1[i] == s2[i]; i++){\r
- if(s1[i] == 0x00){\r
- return True;\r
- }\r
- }\r
- return False;\r
-}\r
-\r
-bool CFunction_CompareStrings_n(const uchar s1[], const uchar s2[], unsigned int n)\r
-{\r
- uint i;\r
-\r
- for(i = 0; i < n; i++){\r
- if(s1[i] != s2[i]){\r
- return False;\r
- }\r
- if(s1[i] == 0x00){\r
- return True;\r
- }\r
- }\r
- return True;\r
-}\r
-\r
-uint CFunction_ExtractBits(uint source, uint start, uint end)\r
-{\r
- return (source >> start) & ~(0xffffffff << (end - start + 1));\r
-}\r
-\r
-//\95¶\8e\9a\97ñ\93à\82Ìn\94Ô\96Ú\82Ì\92P\8cê(\83X\83y\81[\83X\8bæ\90Ø\82è\82É\82æ\82é)\82Ì\90æ\93ª\83A\83h\83\8c\83X\82ð\8eæ\93¾\82·\82é\81B\r
-//\96ß\82è\92l\82Í\81An\94Ô\96Ú\82Ì\92P\8cê\82ª\91¶\8dÝ\82·\82é\82©\82Ç\82¤\82©\82ð\95Ô\82·\81B\r
-//\91¶\8dÝ\82µ\82È\82©\82Á\82½\8fê\8d\87\82Ì*wordptr\82Ís\82Ì\96\96\92[\82ð\95Ô\82·\81B\r
-//wordptr\82ÍNull\8b\96\97e\81B\r
-bool CFunction_String_GetWord(const uchar s[], uchar *wordptr[], uint n)\r
-{\r
- uint i, count;\r
-\r
- if(s == Null){\r
- if(wordptr != Null){\r
- *wordptr = Null;\r
- }\r
- return False;\r
- }\r
-\r
- if(n == 0){\r
- if(wordptr != Null){\r
- *wordptr = (uchar *)s;\r
- }\r
- return True;\r
- }\r
-\r
- count = 0;\r
- for(i = 0; s[i] != 0x00; i++){\r
- if(s[i] == ' '){\r
- count++;\r
- for(; s[i] != 0x00; i++){\r
- if(s[i] != ' '){\r
- break;\r
- }\r
- }\r
- if(s[i] != 0x00 && count == n){\r
- if(wordptr != Null){\r
- *wordptr = (uchar *)&s[i];\r
- }\r
- return True;\r
- }\r
- }\r
- }\r
-\r
- if(wordptr != Null){\r
- *wordptr = (uchar *)&s[i];\r
- }\r
- return False;\r
-}\r
-\r
-//source\94Ô\92n\82©\82ç\82Ì\81Adestination_size\82ð\92´\82¦\82È\82¢source_size\83o\83C\83g\82ð\81Adestination\94Ô\92n\82Ö\88Ú\93®\82³\82¹\82é\81B\r
-//\83\81\83\82\83\8a\94Í\88Í\82ª\8fd\82È\82Á\82Ä\82¢\82Ä\82à\83f\81[\83^\82Í\94j\89ó\82³\82ê\82È\82¢(\94Í\88Í\82ª\8fd\82È\82Á\82Ä\82¢\82é\8fê\8d\87\81Asource\82Ì\93à\97e\82ª\95Ï\8dX\82³\82ê\82é\89Â\94\\90«\82Í\82 \82é\82ª\81A\88Ú\93®\82³\82ê\82é\83f\81[\83^\8e©\91Ì\82Í\95Û\8e\9d\82³\82ê\82é)\81B\r
-//\93¯\88ê\94Ô\92n\82Ö\83R\83s\81[\82·\82é\8fê\8d\87\82Í\89½\82à\82µ\82È\82¢\81B\r
-//\96ß\82è\92l\82Í\81A\83R\83s\81[\82µ\82½\83o\83C\83g\90\94\81B\r
-uint CFunction_MemoryMove(void *destination, uint destination_size, const void *source, uint source_size)\r
-{\r
- uint move_size, i;\r
- void *temp;\r
-\r
- if(destination == source){\r
- return 0;\r
- }\r
-\r
- if(destination_size <= source_size){\r
- move_size = destination_size;\r
- } else{\r
- move_size = source_size;\r
- }\r
-\r
- if((uint)source < (uint)destination && (uint)source + source_size > (uint)destination){\r
- //source\82ð\8fã\8f\91\82«\82µ\82Ä\82µ\82Ü\82¤\8fê\8d\87\81A\88ê\93x\83o\83b\83t\83@\82É\91Þ\94ð\82³\82¹\82½\8cã\83R\83s\81[\82·\82é\81B\r
- temp = System_Memory_Allocate(move_size);\r
- i = 0;\r
- if(move_size >= 4){\r
- for(; i < move_size - (4 - 1); i += 4){\r
- ((uint *)temp)[i >> 2] = ((uint *)source)[i >> 2];\r
- }\r
- }\r
- if(i != move_size){\r
- for(; i < move_size; i++){\r
- ((uchar *)temp)[i] = ((uchar *)source)[i];\r
- }\r
- }\r
- } else{\r
- temp = (uchar *)source;\r
- }\r
-\r
- i = 0;\r
- if(move_size >= 4){\r
- for(; i < move_size - (4 - 1); i += 4){\r
- ((uint *)destination)[i >> 2] = ((uint *)temp)[i >> 2];\r
- }\r
- }\r
- if(i != move_size){\r
- for(; i < move_size; i++){\r
- ((uchar *)destination)[i] = ((uchar *)temp)[i];\r
- }\r
- }\r
-\r
- if(temp != source){\r
- System_Memory_Free(temp, move_size);\r
- }\r
-\r
- return move_size;\r
-}\r
-\r
-//\88ø\90\94(uchar s[], uint n, const uchar format[], ...)\r
-// s :\8c\8b\89Ê\82ð\8f\91\82«\8d\9e\82Þ\95¶\8e\9a\97ñ\82Ì\90æ\93ª\83A\83h\83\8c\83X\82ð\8ew\92è\82µ\82Ü\82·\81B\r
-// n :s[]\82Ì\91å\82«\82³\82ð\8ew\92è\82µ\82Ü\82·\81B(n - 1)\94Ô\96Ú\88È\8d~\82Ì\95¶\8e\9a\82Í\8f\91\82«\8d\9e\82Ü\82ê\82Ü\82¹\82ñ\81B\r
-// :\82½\82¾\82µ\81A\83[\83\8d\82ð\8ew\92è\82µ\82½\8fê\8d\87\82Í\81A\89½\82à\8fo\97Í\82µ\82Ü\82¹\82ñ\81B\82±\82Ì\8fê\8d\87\81As[]\82Í0(null)\82ð\8ew\92è\82·\82é\82±\82Æ\82à\82Å\82«\82Ü\82·\81B\r
-// format :\8f\91\8e®\8ew\92è\95¶\8e\9a\97ñ\82Ì\90æ\93ª\83A\83h\83\8c\83X\82ð\8ew\92è\82µ\82Ü\82·\81B\8fI\92[\82Í0x00\82Å\82 \82é\95K\97v\82ª\82 \82è\82Ü\82·\81B\r
-// ... :\89Â\95Ï\92·\88ø\90\94\82Å\82·\81B\r
-//\r
-//\8cë\82Á\82½\83t\83H\81[\83}\83b\83g\82ª\8ew\92è\82³\82ê\82½\8fê\8d\87\81A\82»\82Ì\95\94\95ª\82Ì\83t\83H\81[\83}\83b\83g\89ð\8eß\82ð\8fI\97¹\82µ\81A\r
-//\89ð\8eß\82Å\82«\82È\82©\82Á\82½\95\94\95ª\82©\82ç\92Ê\8fí\95¶\8e\9a\82Æ\82µ\82Ä\8fo\97Í\82µ\82Ü\82·\r
-//\r
-//%[\83t\83\89\83O][\8dÅ\8f¬\83t\83B\81[\83\8b\83h\95\9d][\90¸\93x][\95Ï\8a·\8fC\8fü\8eq]\83t\83H\81[\83}\83b\83g\8ew\92è\8eq"\r
-// text :\95½\95¶\82Í%\82ð\8f\9c\82«\81A\82»\82Ì\82Ü\82Ü\8fo\97Í\82³\82ê\82Ü\82·\81B\r
-// \8eg\97p\89Â\94\\82È\83t\83H\81[\83}\83b\83g\8ew\92è\8eq:\r
-// %% :%\95¶\8e\9a\82ð\8fo\97Í\82µ\82Ü\82·\81B\r
-// o :\83f\81[\83^\82ð8\90i\90\94\82Å\8fo\97Í\82µ\82Ü\82·\81B\r
-// d, i :\83f\81[\83^\82ð10\90i\90\94\82Å\8fo\97Í\82µ\82Ü\82·\81B\r
-// x, X :\83f\81[\83^\82ð16\90i\90\94\82Å\8fo\97Í\82µ\82Ü\82·\81Bx:\83A\83\8b\83t\83@\83x\83b\83g\8f¬\95¶\8e\9a\81BX:\83A\83\8b\83t\83@\83x\83b\83g\91å\95¶\8e\9a\81B\r
-// u :\83f\81[\83^\82ð\95\84\8d\86\82È\82µ10\90i\90\94\82Å\8fo\97Í\82µ\82Ü\82·\81B\r
-// c :\83f\81[\83^\82ðASCII\83R\81[\83h\82Æ\89ð\8eß\82µ\82Ä\88ê\95¶\8e\9a\82ð\8fo\97Í\82µ\82Ü\82·\81B\r
-// s :\83f\81[\83^\82ð\95¶\8e\9a\97ñ\82Ö\82Ì\83|\83C\83\93\83^\82Æ\89ð\8eß\82µ\82Ä\95¶\8e\9a\97ñ\82ð\8fo\97Í\82µ\82Ü\82·\81B\95¶\8e\9a\97ñ\82Ì\8fI\92[\82Í0(null)\82Å\82 \82é\95K\97v\82ª\82 \82è\82Ü\82·\81B\r
-// f :\83f\81[\83^\82ð\95\82\93®\8f¬\90\94\93_\90\94\82Æ\82µ\82Ä\8fo\97Í\82µ\82Ü\82·\81Bfloat/double\82Ì\8bæ\95Ê\82Í\82µ\82Ü\82¹\82ñ\81B\95W\8f\80\82Ì\90¸\93x\82Í6\8c\85\82Å\82·\81B\r
-// e, E :\83f\81[\83^\82ð\8ew\90\94\8c`\8e®\82Å\8fo\97Í\82µ\82Ü\82·\81Be:\83A\83\8b\83t\83@\83x\83b\83g\8f¬\95¶\8e\9a\81BE:\83A\83\8b\83t\83@\83x\83b\83g\91å\95¶\8e\9a\81B\95W\8f\80\82Ì\90¸\93x\82Í6\8c\85\82Å\82·\81B\r
-// g, G :\92Ê\8fí\82Íf\83t\83H\81[\83}\83b\83g\8ew\92è\8eq\82Æ\93¯\82¶\93®\8dì\82ð\82µ\82Ü\82·\82ª\81A\r
-// :\8ew\90\94\95\94\82ª-5\88È\89º\82©\81A\97L\8cø\90¸\93x\88È\8fã\82Ì\82Æ\82«\82Íe,E\83t\83H\81[\83}\83b\83g\8ew\92è\8eq\82Æ\93¯\82¶\93®\8dì\82ð\82µ\82Ü\82·\81B\r
-// :\82±\82Ì\8f\91\8e®\82Ì\96Ú\93I\82Í\81A\82È\82é\82×\82\92Z\82¢\95\\8c»\82Å\8fo\97Í\82·\82é\82±\82Æ\82Å\82·\81B\r
-// p :\83f\81[\83^\82ð\89½\82ç\82©\82Ì\83|\83C\83\93\83^\82Æ\89ð\8eß\82µ\82Ä\81A\82»\82Ì\8ew\82µ\8e¦\82·\83A\83h\83\8c\83X\82ð\8fo\97Í\82µ\82Ü\82·\81B\r
-// n :\82±\82Ì\83t\83H\81[\83}\83b\83g\8ew\92è\8eq\82ð\8aÜ\82Þ\83t\83H\81[\83}\83b\83g\8ew\92è\82É\92B\82·\82é\82Ü\82Å\81A\8d¡\89ñ\8fo\97Í\82µ\82½\95¶\8e\9a\90\94\82ð\81A\r
-// :\83f\81[\83^\82ðuint *\82Æ\82µ\82Ä\89ð\8eß\82µ\81A\83|\83C\83\93\83^\82ª\8ew\82µ\8e¦\82·\90æ\82Ìuint\8c^\95Ï\90\94\82É\91ã\93ü\82µ\82Ü\82·\81B\r
-\r
-int snprintf(uchar s[], uint n, const uchar format[], ...)\r
-{\r
- return CFunction_vsnprintf(s, n, format, (uint *)(&format + 1));\r
-}\r
-\r
-int vsnprintf(uchar s[], uint n, const uchar format[], uint vargs[])\r
-{\r
- return CFunction_vsnprintf(s, n, format, vargs);\r
-}\r
-\r
-int CFunction_vsnprintf(uchar s[], uint n, const uchar format[], uint vargs[])\r
-{\r
- uchar c;\r
- uint i, j;\r
- const uchar *d;\r
- uint flag_fill_zero;\r
- uint fill_length;\r
-\r
- CFunction_vsnprintf_WorkArea work;\r
-\r
- CFunction_vsnprintf_Initialize_WorkArea(&work, s, format, n, vargs); \r
-\r
- flag_fill_zero = False;\r
- fill_length = 0xffffffff;\r
-\r
- for(;;){\r
- if(CFunction_vsnprintf_Check_FormatBuffer(&work) == -1){\r
- break;\r
- }\r
- c = CFunction_vsnprintf_Read_FormatBuffer(&work);\r
- if(work.format_phase > 0){ /*\8f\91\8e®\8ew\92è\92\86*/\r
- if(c == '%'){ /*%\95¶\8e\9a\82ð\8fo\97Í\82µ\82Ü\82·\81B*/\r
- CFunction_vsnprintf_Write_DestinationBuffer(&work, '%');\r
- work.format_phase = 0;\r
- } else if(c == 'o'){ /*\83f\81[\83^\82ð8\90i\90\94\82Å\8fo\97Í\82µ\82Ü\82·\81B*/\r
- } else if(c == 'd'){ /*\83f\81[\83^\82ð10\90i\90\94\82Å\8fo\97Í\82µ\82Ü\82·\81B*/\r
- /*\95W\8f\80\90¸\93x\82Í\88ê\8c\85\88È\8fã\81A\83[\83\8d\83t\83B\83\8b\82Å\82·\81B*/\r
- if(fill_length == 0xffffffff){\r
- fill_length = 1;\r
- flag_fill_zero = True;\r
- }\r
- i = CFunction_vsnprintf_Get_NextArgument(&work);\r
- if((i & 0x80000000) != 0){\r
- i--;\r
- i = ~i;\r
- CFunction_vsnprintf_Write_DestinationBuffer(&work, '-');\r
- }\r
- CFunction_vsnprintf_To_String_From_Decimal_Unsigned(&work, i);\r
-\r
- for(i = 0; i < 10; i++){\r
- if(work.temporary_data[i] != ' '){\r
- break;\r
- }\r
- }\r
- if(i == 10){\r
- i--;\r
- work.temporary_data[10 - 1] = '0';\r
- }\r
-\r
- if((10 - i) < fill_length && fill_length != 0xffffffff){\r
- if(flag_fill_zero){\r
- for(j = 0; j < (fill_length - (10 - i)); j++){\r
- CFunction_vsnprintf_Write_DestinationBuffer(&work, '0');\r
- }\r
- } else{\r
- for(j = 0; j < (fill_length - (10 - i)); j++){\r
- CFunction_vsnprintf_Write_DestinationBuffer(&work, ' ');\r
- }\r
- }\r
- }\r
- for(; i < 10; i++){\r
- CFunction_vsnprintf_Write_DestinationBuffer(&work, work.temporary_data[i]);\r
- }\r
- work.format_phase = 0;\r
- } else if(c == 'i'){ /*\83f\81[\83^\82ð10\90i\90\94\82Å\8fo\97Í\82µ\82Ü\82·\81B*/\r
- i = CFunction_vsnprintf_Get_NextArgument(&work);\r
- if((i & 0x80000000) != 0){\r
- i--;\r
- i = ~i;\r
- CFunction_vsnprintf_Write_DestinationBuffer(&work, '-');\r
- }\r
- CFunction_vsnprintf_To_String_From_Decimal_Unsigned(&work, i);\r
- for(i = 0; i < 10; i++){\r
- if(work.temporary_data[i] != ' '){\r
- break;\r
- }\r
- if(i >= 10 - 1){\r
- CFunction_vsnprintf_Write_DestinationBuffer(&work, '0');\r
- }\r
- }\r
- for(; i < 10; i++){\r
- CFunction_vsnprintf_Write_DestinationBuffer(&work, work.temporary_data[i]);\r
- }\r
- work.format_phase = 0;\r
- } else if(c == 'x'){ /*\83f\81[\83^\82ð16\90i\90\94\82Å\8fo\97Í\82µ\82Ü\82·\81Bx:\83A\83\8b\83t\83@\83x\83b\83g\8f¬\95¶\8e\9a\81B*/\r
- CFunction_vsnprintf_To_String_From_Hex_Lower(&work, CFunction_vsnprintf_Get_NextArgument(&work));\r
- for(i = 0; i < 8; i++){\r
- if(work.temporary_data[i] != ' '){\r
- break;\r
- }\r
- if(i >= 8 - 1){\r
- CFunction_vsnprintf_Write_DestinationBuffer(&work, '0');\r
- }\r
- }\r
- for(; i < 8; i++){\r
- CFunction_vsnprintf_Write_DestinationBuffer(&work, work.temporary_data[i]);\r
- }\r
- } else if(c == 'X'){ /*\83f\81[\83^\82ð16\90i\90\94\82Å\8fo\97Í\82µ\82Ü\82·\81BX:\83A\83\8b\83t\83@\83x\83b\83g\91å\95¶\8e\9a\81B*/\r
- /*\95W\8f\80\90¸\93x\82Í\88ê\8c\85\88È\8fã\81A\83[\83\8d\83t\83B\83\8b\82Å\82·\81B*/\r
- if(fill_length == 0xffffffff){\r
- fill_length = 1;\r
- flag_fill_zero = True;\r
- }\r
- CFunction_vsnprintf_To_String_From_Hex_Upper(&work, CFunction_vsnprintf_Get_NextArgument(&work));\r
- for(i = 0; i < 8; i++){\r
- if(work.temporary_data[i] != ' '){\r
- break;\r
- }\r
- }\r
- if((8 - i) < fill_length && fill_length != 0xffffffff){\r
- if(flag_fill_zero){\r
- for(j = 0; j < (fill_length - (8 - i)); j++){\r
- CFunction_vsnprintf_Write_DestinationBuffer(&work, '0');\r
- }\r
- } else{\r
- for(j = 0; j < (fill_length - (8 - i)); j++){\r
- CFunction_vsnprintf_Write_DestinationBuffer(&work, ' ');\r
- }\r
- }\r
- }\r
- for(; i < 8; i++){\r
- CFunction_vsnprintf_Write_DestinationBuffer(&work, work.temporary_data[i]);\r
- }\r
- work.format_phase = 0;\r
- } else if(c == 'u'){ /*\83f\81[\83^\82ð\95\84\8d\86\82È\82µ10\90i\90\94\82Å\8fo\97Í\82µ\82Ü\82·\81B*/\r
- CFunction_vsnprintf_To_String_From_Decimal_Unsigned(&work, CFunction_vsnprintf_Get_NextArgument(&work));\r
- for(i = 0; i < 10; i++){\r
- if(work.temporary_data[i] != ' '){\r
- break;\r
- }\r
- if(i >= 10 - 1){\r
- CFunction_vsnprintf_Write_DestinationBuffer(&work, '0');\r
- }\r
- }\r
- for(; i < 10; i++){\r
- CFunction_vsnprintf_Write_DestinationBuffer(&work, work.temporary_data[i]);\r
- }\r
- work.format_phase = 0;\r
- } else if(c == 'c'){ /*\83f\81[\83^\82ðASCII\83R\81[\83h\82Æ\89ð\8eß\82µ\82Ä\88ê\95¶\8e\9a\82ð\8fo\97Í\82µ\82Ü\82·\81B*/\r
- CFunction_vsnprintf_Write_DestinationBuffer(&work, CFunction_vsnprintf_Get_NextArgument(&work));\r
- work.format_phase = 0;\r
- } else if(c == 's'){ /*\83f\81[\83^\82ð\95¶\8e\9a\97ñ\82Ö\82Ì\83|\83C\83\93\83^\82Æ\89ð\8eß\82µ\82Ä\95¶\8e\9a\97ñ\82ð\8fo\97Í\82µ\82Ü\82·\81B\95¶\8e\9a\97ñ\82Ì\8fI\92[\82Í0(null)\82Å\82 \82é\95K\97v\82ª\82 \82è\82Ü\82·\81B*/\r
- d = (const uchar *)CFunction_vsnprintf_Get_NextArgument(&work);\r
- for (; *d != 0x00; d++){\r
- CFunction_vsnprintf_Write_DestinationBuffer(&work, *d);\r
- }\r
- work.format_phase = 0;\r
- } else if(c == 'f'){ /*\83f\81[\83^\82ð\95\82\93®\8f¬\90\94\93_\90\94\82Æ\82µ\82Ä\8fo\97Í\82µ\82Ü\82·\81Bfloat/double\82Ì\8bæ\95Ê\82Í\82µ\82Ü\82¹\82ñ\81B\95W\8f\80\82Ì\90¸\93x\82Í6\8c\85\82Å\82·\81B\89Â\95Ï\92·\88ø\90\94\82Ì\8fê\8d\87\81A\95\82\93®\8f¬\90\94\93_\90\94\82Í\8fí\82Édouble\82É\8ag\92£\82³\82ê\82é\82©\82ç\82Å\82·\81B*/\r
- ((uint *)work.temporary_data_double)[0] = CFunction_vsnprintf_Get_NextArgument(&work);\r
- ((uint *)work.temporary_data_double)[1] = CFunction_vsnprintf_Get_NextArgument(&work);\r
-\r
- CFunction_vsnprintf_To_String_From_Hex_Upper(&work, ((uint *)work.temporary_data_double)[1]);\r
- for(i = 0; i < 8; i++){\r
- if(work.temporary_data[i] != ' '){\r
- break;\r
- }\r
- }\r
- for(; i < 8; i++){\r
- CFunction_vsnprintf_Write_DestinationBuffer(&work, work.temporary_data[i]);\r
- }\r
-\r
- CFunction_vsnprintf_To_String_From_Hex_Upper(&work, ((uint *)work.temporary_data_double)[0]);\r
- for(i = 0; i < 8; i++){\r
- if(work.temporary_data[i] != ' '){\r
- break;\r
- }\r
- }\r
- for(; i < 8; i++){\r
- CFunction_vsnprintf_Write_DestinationBuffer(&work, work.temporary_data[i]);\r
- }\r
- work.format_phase = 0;\r
- } else if(c == 'e'){ /*\83f\81[\83^\82ð\8ew\90\94\8c`\8e®\82Å\8fo\97Í\82µ\82Ü\82·\81Be:\83A\83\8b\83t\83@\83x\83b\83g\8f¬\95¶\8e\9a\81B\95W\8f\80\82Ì\90¸\93x\82Í6\8c\85\82Å\82·\81B*/\r
- \r
- } else if(c == 'E'){ /*\83f\81[\83^\82ð\8ew\90\94\8c`\8e®\82Å\8fo\97Í\82µ\82Ü\82·\81BE:\83A\83\8b\83t\83@\83x\83b\83g\91å\95¶\8e\9a\81B\95W\8f\80\82Ì\90¸\93x\82Í6\8c\85\82Å\82·\81B*/\r
- } else if(c == 'g'){ /*\92Ê\8fí\82Íf\83t\83H\81[\83}\83b\83g\8ew\92è\8eq\82Æ\93¯\82¶\93®\8dì\82ð\82µ\82Ü\82·\82ª\81A\8ew\90\94\95\94\82ª-5\88È\89º\82©\81A\97L\8cø\90¸\93x\88È\8fã\82Ì\82Æ\82«\82Í*/\r
- } else if(c == 'G'){ /*e,E\83t\83H\81[\83}\83b\83g\8ew\92è\8eq\82Æ\93¯\82¶\93®\8dì\82ð\82µ\82Ü\82·\81B\82±\82Ì\8f\91\8e®\82Ì\96Ú\93I\82Í\81A\82È\82é\82×\82\92Z\82¢\95\\8c»\82Å\8fo\97Í\82·\82é\82±\82Æ\82Å\82·\81B*/\r
- } else if(c == 'p'){ /*\83f\81[\83^\82ð\89½\82ç\82©\82Ì\83|\83C\83\93\83^\82Æ\89ð\8eß\82µ\82Ä\81A\82»\82Ì\8ew\82µ\8e¦\82·\83A\83h\83\8c\83X\82ð\8fo\97Í\82µ\82Ü\82·\81B*/\r
- } else if(c == 'n'){ /*\82±\82Ì\83t\83H\81[\83}\83b\83g\8ew\92è\8eq\82ð\8aÜ\82Þ\83t\83H\81[\83}\83b\83g\8ew\92è\82É\92B\82·\82é\82Ü\82Å\81A\8d¡\89ñ\8fo\97Í\82µ\82½\95¶\8e\9a\90\94\82ð\81A\83f\81[\83^\82ðuint *\82Æ\82µ\82Ä\89ð\8eß\82µ\81A\83|\83C\83\93\83^\82ª\8ew\82µ\8e¦\82·\90æ\82Ìuint\8c^\95Ï\90\94\82É\91ã\93ü\82µ\82Ü\82·\81B*/\r
- } else if(0x30 <= c && c <= 0x39){ /*\90\94\8e\9a*/\r
- c -= 0x30;\r
- if(fill_length == 0xffffffff && c == 0){ /*\8dÅ\8f\89\82Ì\83[\83\8d:\83[\83\8d\8f[\93U\82ð\97v\8b\81*/\r
- flag_fill_zero = True;\r
- fill_length = 0;\r
- } else{\r
- if(fill_length == 0xffffffff){\r
- fill_length = c;\r
- } else{\r
- fill_length = (fill_length * 10) + c;\r
- }\r
- }\r
- } else{\r
- CFunction_vsnprintf_Write_DestinationBuffer(&work, c);\r
- work.format_phase = 0;\r
- }\r
- } else{ /*\88ê\94Ê\95¶\8e\9a\82©\82à*/\r
- if(c == '%'){ /*\8e\9f\82©\82ç\82Í\8f\91\8e®\8ew\92è*/\r
- flag_fill_zero = False;\r
- fill_length = 0xffffffff;\r
- work.format_phase = 1;\r
- } else{ /*\88ê\94Ê\95¶\8e\9a\8fo\97Í\92\86*/\r
- CFunction_vsnprintf_Write_DestinationBuffer(&work, c);\r
- }\r
- }\r
- }\r
-\r
- CFunction_vsnprintf_End(&work);\r
-\r
- return work.index_destination_buf;\r
-}\r
-\r
-void CFunction_vsnprintf_Initialize_WorkArea(CFunction_vsnprintf_WorkArea *work, uchar s[], const uchar format[], uint n, uint vargs[])\r
-{\r
- work->destination_buf = s;\r
- work->length_destination_buf = n;\r
- work->index_destination_buf = 0;\r
-\r
- work->format_buf = format;\r
- work->index_format_buf = 0;\r
-\r
- work->temporary_data[15] = 0x00;\r
-\r
- work->vargs = vargs;\r
- work->index_vargs = 0;\r
-\r
- work->format_phase = 0;\r
-\r
- return;\r
-}\r
-\r
-int CFunction_vsnprintf_Check_FormatBuffer(CFunction_vsnprintf_WorkArea *work)\r
-{\r
- if(work->format_buf[work->index_format_buf] == 0x00){\r
- return -1;\r
- }\r
- return 0;\r
-}\r
-\r
-int CFunction_vsnprintf_Check_DestinationBuffer(CFunction_vsnprintf_WorkArea *work)\r
-{\r
- if(work->index_destination_buf >= work->length_destination_buf){\r
- return -1;\r
- }\r
- return 0;\r
-}\r
-\r
-uchar CFunction_vsnprintf_Read_FormatBuffer(CFunction_vsnprintf_WorkArea *work)\r
-{\r
- if(CFunction_vsnprintf_Check_FormatBuffer(work) == -1){\r
- return 0;\r
- }\r
- work->index_format_buf++;\r
- return work->format_buf[work->index_format_buf - 1];\r
-}\r
-\r
-void CFunction_vsnprintf_Write_DestinationBuffer(CFunction_vsnprintf_WorkArea *work, uchar c)\r
-{\r
- if(CFunction_vsnprintf_Check_DestinationBuffer(work) != -1){\r
- if(work->destination_buf != 0){\r
- work->destination_buf[work->index_destination_buf] = c;\r
- }\r
- }\r
- work->index_destination_buf++;\r
- return;\r
-}\r
-\r
-void CFunction_vsnprintf_End(CFunction_vsnprintf_WorkArea *work)\r
-{\r
- if(work->destination_buf != 0){\r
- work->destination_buf[work->index_destination_buf] = 0x00;\r
- }\r
- return;\r
-}\r
-\r
-uint CFunction_vsnprintf_Get_NextArgument(CFunction_vsnprintf_WorkArea *work)\r
-{\r
- work->index_vargs++;\r
- return work->vargs[work->index_vargs - 1];\r
-}\r
-\r
-void CFunction_vsnprintf_To_String_From_Hex_Upper(CFunction_vsnprintf_WorkArea *work, uint hex)\r
-{\r
-/*\83e\83\93\83|\83\89\83\8a\83f\81[\83^\82É\81A\89E\8bl\82ß\81A8\8c\85\8cÅ\92è\81A\8bó\94\92\8f[\93U\81A\8fI\92[null\81A\91å\95¶\8e\9a*/\r
- uint i;\r
-\r
- for(i = 0; i < 8; i++){ /*\92l\82Ì\95ª\94z*/\r
- work->temporary_data[7 - i] = (hex >> (i << 2)) & 0x0000000f;\r
- }\r
- work->temporary_data[8] = 0x00; /*\8fI\92[null*/\r
- for(i = 0; i < 8; i++){ /*\8bó\94\92\8f[\93U*/\r
- if(work->temporary_data[i] != 0x00){\r
- break;\r
- }\r
- work->temporary_data[i] = ' ';\r
- }\r
- for(; i < 8; i++){ /*ASCII\83R\81[\83h\82Ö\95Ï\8a·\81i\91å\95¶\8e\9a\81j*/\r
- if(work->temporary_data[i] > 9){ /*\83A\83\8b\83t\83@\83x\83b\83g\91å\95¶\8e\9a\82Ö\95Ï\8a·*/\r
- work->temporary_data[i] += 55;\r
- } else{ /*\90\94\8e\9a\82Ö\95Ï\8a·*/\r
- work->temporary_data[i] += 48;\r
- }\r
- }\r
- return;\r
-}\r
-\r
-void CFunction_vsnprintf_To_String_From_Hex_Lower(CFunction_vsnprintf_WorkArea *work, uint hex)\r
-{\r
-/*\83e\83\93\83|\83\89\83\8a\83f\81[\83^\82É\81A\89E\8bl\82ß\81A8\8c\85\8cÅ\92è\81A\8bó\94\92\8f[\93U\81A\8fI\92[null\81A\8f¬\95¶\8e\9a*/\r
- uint i;\r
-\r
- for(i = 0; i < 8; i++){ /*\92l\82Ì\95ª\94z*/\r
- work->temporary_data[7 - i] = (hex >> (i << 2)) & 0x0000000f;\r
- }\r
- work->temporary_data[8] = 0x00; /*\8fI\92[null*/\r
- for(i = 0; i < 8; i++){ /*\8bó\94\92\8f[\93U*/\r
- if(work->temporary_data[i] != 0x00){\r
- break;\r
- }\r
- work->temporary_data[i] = ' ';\r
- }\r
- for(; i < 8; i++){ /*ASCII\83R\81[\83h\82Ö\95Ï\8a·\81i\8f¬\95¶\8e\9a\81j*/\r
- if(work->temporary_data[i] > 9){ /*\83A\83\8b\83t\83@\83x\83b\83g\8f¬\95¶\8e\9a\82Ö\95Ï\8a·*/\r
- work->temporary_data[i] += 87;\r
- } else{ /*\90\94\8e\9a\82Ö\95Ï\8a·*/\r
- work->temporary_data[i] += 48;\r
- }\r
- }\r
- return;\r
-}\r
-\r
-void CFunction_vsnprintf_To_String_From_Decimal_Unsigned(CFunction_vsnprintf_WorkArea *work, uint d)\r
-{\r
-/*\83e\83\93\83|\83\89\83\8a\83f\81[\83^\82É\81A\89E\8bl\82ß\81A10\8c\85\8cÅ\92è\81A\8bó\94\92\8f[\93U\81A\8fI\92[null*/\r
- uint i;\r
-\r
- for(i = 0; i < 10; i++){ /*\92l\82Ì\95ª\94z*/\r
- work->temporary_data[9 - i] = d % 10;\r
- d = d / 10;\r
- }\r
- work->temporary_data[10] = 0x00; /*\8fI\92[null*/\r
- for(i = 0; i < 10; i++){ /*\8bó\94\92\8f[\93U*/\r
- if(work->temporary_data[i] != 0x00){\r
- break;\r
- }\r
- work->temporary_data[i] = ' ';\r
- }\r
- for(; i < 10; i++){ /*ASCII\83R\81[\83h\82Ö\95Ï\8a·*/\r
- work->temporary_data[i] += 48;\r
- }\r
- return;\r
-}\r
-\r