Rev 7286 | Rev 7439 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7286 | Rev 7435 | ||
---|---|---|---|
Line 828... | Line 828... | ||
828 | s = DSBYTE[text]; |
828 | s = DSBYTE[text]; |
829 | } |
829 | } |
830 | return ret; |
830 | return ret; |
831 | } |
831 | } |
Line 832... | Line 832... | ||
832 | 832 | ||
833 | inline cdecl int sprintf(dword buf, format,...) |
833 | :dword stdcall sprintf(dword buf, format,...) |
834 | { |
- | |
835 | #define END_ARGS 0xFF00FF //ARGS FUNCTION |
834 | { |
836 | byte s; |
- | |
837 | char X[10]; |
835 | byte s; |
838 | dword ret, tmp, l; |
836 | dword ret, tmp, l; |
839 | dword arg = #format; |
837 | dword arg = #format; |
840 | ret = buf; |
838 | ret = buf; |
841 | s = DSBYTE[format]; |
839 | s = DSBYTE[format]; |
- | 840 | while(s) |
|
842 | while(s){ |
841 | { |
- | 842 | if(s == '%') |
|
843 | if(s=='%'){ |
843 | { |
844 | arg+=4; |
844 | arg += 4; |
845 | tmp = DSDWORD[arg]; |
- | |
846 | if(tmp==END_ARGS)goto END_FUNC_SPRINTF; |
845 | tmp = DSDWORD[arg]; |
847 | $inc format |
846 | format++; |
- | 847 | s = DSBYTE[format]; |
|
- | 848 | IF (!s) |
|
848 | s = DSBYTE[format]; |
849 | { |
- | 850 | DSBYTE[buf] = 0; |
|
- | 851 | return ret; |
|
849 | if(!s)goto END_FUNC_SPRINTF; |
852 | } |
850 | switch(s) |
853 | switch(s) |
851 | { |
854 | { |
852 | case 's': |
855 | case 's': |
853 | l = tmp; |
856 | l = tmp; |
854 | s = DSBYTE[tmp]; |
- | |
855 | while(s) |
857 | WHILE(DSBYTE[tmp]) |
856 | { |
858 | { |
857 | DSBYTE[buf] = s; |
859 | DSBYTE[buf] = DSBYTE[tmp]; |
858 | $inc tmp |
860 | tmp++; |
859 | $inc buf |
- | |
860 | s = DSBYTE[tmp]; |
861 | buf++; |
861 | } |
862 | } |
862 | break; |
863 | break; |
863 | case 'c': |
864 | case 'c': |
864 | DSBYTE[buf] = tmp; |
865 | DSBYTE[buf] = tmp; |
865 | $inc buf |
866 | buf++; |
866 | break; |
867 | break; |
867 | case 'u': //if(tmp<0)return ret; |
868 | case 'u': //if(tmp<0)return ret; |
868 | case 'd': |
869 | case 'd': |
869 | case 'i': |
870 | case 'i': |
870 | tmp = itoa(tmp); |
871 | tmp = itoa(tmp); |
- | 872 | IF (!DSBYTE[tmp]) |
|
- | 873 | { |
|
- | 874 | DSBYTE[buf] = 0; |
|
- | 875 | return ret; |
|
871 | if(!DSBYTE[tmp])goto END_FUNC_SPRINTF; |
876 | } |
872 | l = strlen(tmp); |
877 | l = strlen(tmp); |
873 | strlcpy(buf,tmp,l); |
878 | strlcpy(buf,tmp,l); |
874 | buf += l; |
879 | buf += l; |
875 | break; |
880 | break; |
876 | case 'a': |
881 | case 'a': |
877 | case 'A': |
882 | case 'A': |
878 | strlcpy(buf,"0x00000000",10); |
883 | strlcpy(buf, "0x00000000", 10); |
879 | buf+=10; |
884 | buf += 10; |
880 | l=buf; |
885 | l = buf; |
881 | while(tmp) |
886 | WHILE(tmp) |
882 | { |
887 | { |
883 | $dec buf |
888 | buf--; |
884 | s=tmp&0xF; |
889 | s = tmp & 0xF; |
885 | if(s>9)DSBYTE[buf]='A'+s-10; |
890 | IF (s > 9) DSBYTE[buf] = 'A' - 10 + s; |
886 | else DSBYTE[buf]='0'+s; |
891 | ELSE DSBYTE[buf] = '0' + s; |
887 | tmp>>=4; |
892 | tmp >>= 4; |
888 | } |
893 | } |
889 | buf=l; |
894 | buf = l; |
890 | break; |
895 | break; |
891 | case 'p': |
896 | case 'p': |
892 | tmp = itoa(#tmp); |
897 | tmp = itoa(#tmp); |
- | 898 | IF (!DSBYTE[tmp]) |
|
- | 899 | { |
|
- | 900 | DSBYTE[buf] = 0; |
|
- | 901 | return ret; |
|
893 | if(!DSBYTE[tmp])goto END_FUNC_SPRINTF; |
902 | } |
894 | l = strlen(tmp); |
903 | l = strlen(tmp); |
895 | strlcpy(buf,tmp,l); |
904 | strlcpy(buf,tmp,l); |
896 | buf += l; |
905 | buf += l; |
897 | break; |
906 | break; |
898 | case '%': |
907 | case '%': |
899 | DSBYTE[buf] = '%'; |
908 | DSBYTE[buf] = '%'; |
900 | $inc buf |
909 | buf++; |
901 | break; |
910 | break; |
- | 911 | default: |
|
902 | default: |
912 | { |
- | 913 | DSBYTE[buf] = 0; |
|
- | 914 | return ret; |
|
903 | goto END_FUNC_SPRINTF; |
915 | } |
904 | } |
916 | } |
905 | } |
917 | } |
- | 918 | else |
|
906 | else { |
919 | { |
907 | DSBYTE[buf] = s; |
920 | DSBYTE[buf] = s; |
908 | $inc buf |
921 | buf++; |
909 | } |
922 | } |
910 | $inc format |
923 | format++; |
911 | s = DSBYTE[format]; |
924 | s = DSBYTE[format]; |
912 | } |
- | |
- | 925 | } |
|
913 | END_FUNC_SPRINTF: |
926 | |
914 | DSBYTE[buf] = 0; |
927 | DSBYTE[buf] = 0; |
915 | return ret; |
928 | return ret; |
Line 916... | Line 929... | ||
916 | } |
929 | } |