01 U8 **ParseMotd(U8 *str, I64 *argc) 02 { 03 I64 _argc = 0; 04 U8 **_argv = NULL; 05 U8 **_tmp = CAlloc(sizeof(U64) * StrLen(str)); 06 I64 i = 0; 07 I64 s = 0; 08 I64 len; 09 while (i < StrLen(str) + 1) 10 { 11 switch (str[i]) 12 { 13 case 0: 14 case '\n': 15 len = (str + i)-(str + s - 1); 16 if (len - 1) 17 { 18 _tmp[_argc] = CAlloc(len); 19 MemCpy(_tmp[_argc], str + s, len-1); 20 _argc++; 21 } 22 s = i + 1; 23 break; 24 default: 25 break; 26 } 27 i++; 28 } 29 *argc = _argc; 30 _argv = CAlloc(sizeof(U64) * _argc); 31 MemCpy(_argv, _tmp, sizeof(U64) * _argc); 32 Free(_tmp); 33 Free(str); 34 return _argv; 35 } 36 37 I64 motd_line_cnt; 38 U8 **motd_lines = ParseMotd(StrUtil(FileRead("Motd.TXT"),SUF_REM_CTRL_CHARS), &motd_line_cnt);