|
|
1.1 root 1: /*
2: Hatari - misc.c
3:
4: This file is distributed under the GNU Public License, version 2 or at
5: your option any later version. Read the file gpl.txt for details.
6:
7: Misc functions
8: */
9:
10: #include <ctype.h>
11:
12: #include "main.h"
13: #include "file.h"
14: #include "memAlloc.h"
15: #include "misc.h"
16:
17: long RandomNum;
18:
19:
20: /*-----------------------------------------------------------------------*/
21: /*
22: Fill end of string out with spaces
23: */
24: void Misc_PadStringWithSpaces(char *pszString,int nChars)
25: {
26: int i;
27:
28: for(i=nChars; i>=(int)strlen(pszString); i--) {
29: pszString[i] = ' ';
30: }
31: pszString[nChars] = '\0';
32: }
33:
34:
35: /*-----------------------------------------------------------------------*/
36: /*
37: Remove any spaces from string
38: */
39: void Misc_RemoveSpacesFromString(char *pszSrcString, char *pszDestString)
40: {
41: int i=0,j=0;
42:
43: /* Copy string */
44: while(pszSrcString[i]!='\0') {
45: if (pszSrcString[i]!=' ') { /* Copy character if not a white-space */
46: pszDestString[j] = pszSrcString[i];
47: j++;
48: }
49: i++;
50: }
51:
52: pszDestString[j] = '\0'; /* Term */
53: }
54:
55:
56: /*-----------------------------------------------------------------------*/
57: /*
58: Remove 'white-space' from beginning of text string
59: */
60: void Misc_RemoveWhiteSpace(char *pszString,int Length)
61: {
62: while( (*pszString==' ') || (*pszString=='\t') ) {
63: /* Copy line left one character */
64: memmove(pszString,pszString+1,Length-1);
65: }
66: }
67:
68:
69: /*-----------------------------------------------------------------------*/
70: /*
71: Convert a string to uppercase.
72: */
73: void Misc_strupr(char *pString)
74: {
75: while(*pString)
76: {
77: *pString = toupper(*pString);
78: pString++;
79: }
80: }
81:
82:
83: /*-----------------------------------------------------------------------*/
84: /*
85: Find working directory, and store to 'szWorkingDir'
86: Note: I'm not sure if this function is still usefull in Hatari - Thothy
87: */
88: void Misc_FindWorkingDirectory(char *prgname)
89: {
90: char szSrcDir[256], szSrcName[128], szSrcExt[32];
91:
92: /* Find name of program */
93: strncpy(szWorkingDir, prgname, MAX_FILENAME_LENGTH);
94: File_splitpath(szWorkingDir, szSrcDir, szSrcName, szSrcExt);
95: File_makepath(szWorkingDir, szSrcDir, "", "");
96: /* And remove trailing backslash */
97: if (strlen(szWorkingDir)>0) {
98: if (szWorkingDir[strlen(szWorkingDir)-1]=='/')
99: szWorkingDir[strlen(szWorkingDir)-1]='\0';
100: }
101:
102: }
103:
104:
105: /*-----------------------------------------------------------------------*/
106: /*
107: Limit integer between min/max range
108: */
109: int Misc_LimitInt(int Value, int MinRange, int MaxRange)
110: {
111: if (Value<MinRange)
112: Value = MinRange;
113: else if (Value>MaxRange)
114: Value = MaxRange;
115:
116: return(Value);
117: }
118:
119:
120: /*-----------------------------------------------------------------------*/
121: /*
122: Convert value to 2-digit BCD
123: */
124: unsigned char Misc_ConvertToBCD(unsigned short int Value)
125: {
126: return (((Value/10))<<4) | (Value%10);
127: }
128:
129:
130: /*-----------------------------------------------------------------------*/
131: /*
132: See own random number(must be !=0)
133: */
134: void Misc_SeedRandom(unsigned long Seed)
135: {
136: RandomNum = Seed;
137: }
138:
139:
140: /*-----------------------------------------------------------------------*/
141: /*
142: Get mext random number
143: */
144: long Misc_NextLongRand(long Seed)
145: {
146: unsigned long Lo, Hi;
147:
148: Lo = 16807 * (long)(Seed & 0xffff);
149: Hi = 16807 * (long)((unsigned long)Seed >> 16);
150: Lo += (Hi & 0x7fff) << 16;
151: if (Lo > 2147483647L) {
152: Lo &= 2147483647L;
153: ++Lo;
154: }
155: Lo += Hi >> 15;
156: if (Lo > 2147483647L) {
157: Lo &= 2147483647L;
158: ++Lo;
159: }
160: return((long)Lo);
161: }
162:
163:
164: /*-----------------------------------------------------------------------*/
165: /*
166: Get own random number
167: */
168: long Misc_GetRandom(void)
169: {
170: RandomNum = Misc_NextLongRand(RandomNum);
171: return(RandomNum);
172: }
173:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.