Rev 3707 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3707 | Rev 4011 | ||
---|---|---|---|
Line 75... | Line 75... | ||
75 | else |
75 | else |
76 | printf("cpu: halted\n"); |
76 | printf("cpu: halted\n"); |
77 | cpu_halt(); |
77 | cpu_halt(); |
78 | } |
78 | } |
79 | 79 | ||
80 | /** Return number of characters in a string. |
- | |
81 | * |
- | |
82 | * @param str NULL terminated string. |
- | |
83 | * |
- | |
84 | * @return Number of characters in str. |
- | |
85 | */ |
- | |
86 | size_t strlen(const char *str) |
- | |
87 | { |
- | |
88 | int i; |
- | |
89 | - | ||
90 | for (i = 0; str[i]; i++) |
- | |
91 | ; |
- | |
92 | - | ||
93 | return i; |
- | |
94 | } |
- | |
95 | - | ||
96 | /** Compare two NULL terminated strings |
- | |
97 | * |
- | |
98 | * Do a char-by-char comparison of two NULL terminated strings. |
- | |
99 | * The strings are considered equal iff they consist of the same |
- | |
100 | * characters on the minimum of their lengths. |
- | |
101 | * |
- | |
102 | * @param src First string to compare. |
- | |
103 | * @param dst Second string to compare. |
- | |
104 | * |
- | |
105 | * @return 0 if the strings are equal, -1 if first is smaller, 1 if second smaller. |
- | |
106 | * |
- | |
107 | */ |
- | |
108 | int strcmp(const char *src, const char *dst) |
- | |
109 | { |
- | |
110 | for (; *src && *dst; src++, dst++) { |
- | |
111 | if (*src < *dst) |
- | |
112 | return -1; |
- | |
113 | if (*src > *dst) |
- | |
114 | return 1; |
- | |
115 | } |
- | |
116 | if (*src == *dst) |
- | |
117 | return 0; |
- | |
118 | if (!*src) |
- | |
119 | return -1; |
- | |
120 | return 1; |
- | |
121 | } |
- | |
122 | - | ||
123 | - | ||
124 | /** Compare two NULL terminated strings |
- | |
125 | * |
- | |
126 | * Do a char-by-char comparison of two NULL terminated strings. |
- | |
127 | * The strings are considered equal iff they consist of the same |
- | |
128 | * characters on the minimum of their lengths and specified maximal |
- | |
129 | * length. |
- | |
130 | * |
- | |
131 | * @param src First string to compare. |
- | |
132 | * @param dst Second string to compare. |
- | |
133 | * @param len Maximal length for comparison. |
- | |
134 | * |
- | |
135 | * @return 0 if the strings are equal, -1 if first is smaller, 1 if second smaller. |
- | |
136 | * |
- | |
137 | */ |
- | |
138 | int strncmp(const char *src, const char *dst, size_t len) |
- | |
139 | { |
- | |
140 | unsigned int i; |
- | |
141 | - | ||
142 | for (i = 0; (*src) && (*dst) && (i < len); src++, dst++, i++) { |
- | |
143 | if (*src < *dst) |
- | |
144 | return -1; |
- | |
145 | if (*src > *dst) |
- | |
146 | return 1; |
- | |
147 | } |
- | |
148 | if (i == len || *src == *dst) |
- | |
149 | return 0; |
- | |
150 | if (!*src) |
- | |
151 | return -1; |
- | |
152 | return 1; |
- | |
153 | } |
- | |
154 | - | ||
155 | - | ||
156 | - | ||
157 | /** Copy NULL terminated string. |
- | |
158 | * |
- | |
159 | * Copy at most 'len' characters from string 'src' to 'dest'. |
- | |
160 | * If 'src' is shorter than 'len', '\0' is inserted behind the |
- | |
161 | * last copied character. |
- | |
162 | * |
- | |
163 | * @param src Source string. |
- | |
164 | * @param dest Destination buffer. |
- | |
165 | * @param len Size of destination buffer. |
- | |
166 | */ |
- | |
167 | void strncpy(char *dest, const char *src, size_t len) |
- | |
168 | { |
- | |
169 | unsigned int i; |
- | |
170 | for (i = 0; i < len; i++) { |
- | |
171 | if (!(dest[i] = src[i])) |
- | |
172 | return; |
- | |
173 | } |
- | |
174 | dest[i-1] = '\0'; |
- | |
175 | } |
- | |
176 | - | ||
177 | /** Convert ascii representation to unative_t |
80 | /** Convert ascii representation to unative_t |
178 | * |
81 | * |
179 | * Supports 0x for hexa & 0 for octal notation. |
82 | * Supports 0x for hexa & 0 for octal notation. |
180 | * Does not check for overflows, does not support negative numbers |
83 | * Does not check for overflows, does not support negative numbers |
181 | * |
84 | * |