|
@@ -28,6 +28,7 @@
|
|
|
*
|
|
|
* History
|
|
|
* ------
|
|
|
+ * 2003-03-30 str2int and str2float added (janakj)
|
|
|
* 2003-02-28 scratchpad compatibility abandoned (jiri)
|
|
|
* 2003-02-13 strlower added (janakj)
|
|
|
* 2003-01-29 pathmax added (jiri)
|
|
@@ -372,4 +373,55 @@ static inline void strlower(str* _s)
|
|
|
}
|
|
|
|
|
|
|
|
|
+/*
|
|
|
+ * Convert a str into integer
|
|
|
+ */
|
|
|
+static inline int str2int(str* _s, unsigned int* _r)
|
|
|
+{
|
|
|
+ int i;
|
|
|
+
|
|
|
+ *_r = 0;
|
|
|
+ for(i = 0; i < _s->len; i++) {
|
|
|
+ if ((_s->s[i] >= '0') && (_s->s[i] <= '9')) {
|
|
|
+ *_r *= 10;
|
|
|
+ *_r += _s->s[i] - '0';
|
|
|
+ } else {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/*
|
|
|
+ * Convert a str to float
|
|
|
+ */
|
|
|
+static inline int str2float(str* _s, float* _r)
|
|
|
+{
|
|
|
+ int i, dot = 0;
|
|
|
+ float order = 0.1;
|
|
|
+
|
|
|
+ *_r = 0;
|
|
|
+ for(i = 0; i < _s->len; i++) {
|
|
|
+ if (_s->s[i] == '.') {
|
|
|
+ if (dot) return -1;
|
|
|
+ dot = 1;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if ((_s->s[i] >= '0') && (_s->s[i] <= '9')) {
|
|
|
+ if (dot) {
|
|
|
+ *_r += (_s->s[i] - '0') * order;
|
|
|
+ order /= 10;
|
|
|
+ } else {
|
|
|
+ *_r *= 10;
|
|
|
+ *_r += _s->s[i] - '0';
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return -2;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
#endif
|