]> 4ch.mooo.com Git - 16.git/blob - src/lib/16_head.c
no idea why bcexmm.exe is broke w tweaked zcroll.exe a bit also Quit is refined now~
[16.git] / src / lib / 16_head.c
1 /* Project 16 Source Code~\r
2  * Copyright (C) 2012-2016 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover\r
3  *\r
4  * This file is part of Project 16.\r
5  *\r
6  * Project 16 is free software; you can redistribute it and/or modify\r
7  * it under the terms of the GNU General Public License as published by\r
8  * the Free Software Foundation; either version 3 of the License, or\r
9  * (at your option) any later version.\r
10  *\r
11  * Project 16 is distributed in the hope that it will be useful,\r
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
14  * GNU General Public License for more details.\r
15  *\r
16  * You should have received a copy of the GNU General Public License\r
17  * along with this program.  If not, see <http://www.gnu.org/licenses/>, or\r
18  * write to the Free Software Foundation, Inc., 51 Franklin Street,\r
19  * Fifth Floor, Boston, MA 02110-1301 USA.\r
20  *\r
21  */\r
22 \r
23 #include "src/lib/16_head.h"\r
24 \r
25 long int\r
26 filesize(FILE *fp)\r
27 {\r
28         long int save_pos, size_of_file;\r
29 \r
30         save_pos = ftell(fp);\r
31         fseek(fp, 0L, SEEK_END);\r
32         size_of_file = ftell(fp);\r
33         fseek(fp, save_pos, SEEK_SET);\r
34         return(size_of_file);\r
35 }\r
36 \r
37 void printmeminfoline(byte *strc, const byte *pee, size_t h_total, size_t h_used, size_t h_free)\r
38 {\r
39         byte str[64];\r
40         strcat(strc,pee); strcat(strc,"            "); ultoa((dword)h_total,str,10); strcat(strc,str);\r
41         if(strlen(str)<=4) strcat(strc,"        "); //printf("%u\n", strlen(str));\r
42         strcat(strc,"   "); ultoa((dword)h_used,str,10); strcat(strc,str); strcat(strc,"        "); strcat(strc,"  ");\r
43         ultoa((dword)h_free,str,10); strcat(strc,str);\r
44         strcat(strc,"\n");\r
45 }\r
46 \r
47 ///////////////////////////////////////////////////////////////////////////\r
48 //\r
49 //      US_CheckParm() - checks to see if a string matches one of a set of\r
50 //              strings. The check is case insensitive. The routine returns the\r
51 //              index of the string that matched, or -1 if no matches were found\r
52 //\r
53 ///////////////////////////////////////////////////////////////////////////\r
54 int\r
55 US_CheckParm(char *parm,char **strings)\r
56 {\r
57         char    cp,cs,\r
58                         *p,*s;\r
59         int             i;\r
60 \r
61         while (!isalpha(*parm)) // Skip non-alphas\r
62                 parm++;\r
63 \r
64         for (i = 0;*strings && **strings;i++)\r
65         {\r
66                 for (s = *strings++,p = parm,cs = cp = 0;cs == cp;)\r
67                 {\r
68                         cs = *s++;\r
69                         if (!cs)\r
70                                 return(i);\r
71                         cp = *p++;\r
72 \r
73                         if (isupper(cs))\r
74                                 cs = tolower(cs);\r
75                         if (isupper(cp))\r
76                                 cp = tolower(cp);\r
77                 }\r
78         }\r
79         return(-1);\r
80 }\r
81 \r
82 \r
83 byte dirchar(byte in)\r
84 {\r
85         byte out;\r
86         switch(in)\r
87         {\r
88                 case 0: //up\r
89                         out = 0x1E;\r
90                 break;\r
91                 case 4: //down\r
92                         out = 0x1F;\r
93                 break;\r
94                 case 1: //left\r
95                         out = 0x11;\r
96                 break;\r
97                 case 3: //right\r
98                         out = 0x10;\r
99                 break;\r
100                 default: //null\r
101                         out = 0xB3;\r
102                 break;\r
103         }\r
104         return out;\r
105 }\r