libs: Fixed
Keys with order zero or less are now sorted properly.
@@ -873,32 +873,39 @@ int keySetCTime (Key * key, time_t ctime)
int elektraKeyCmpOrder (const Key * ka, const Key * kb)
{
- if (!ka && !kb) return 0;
-
- if (ka && !kb) return 1;
+ if (ka == NULL && kb == NULL)
+ {
+ return 0;
+ }
- if (!ka && kb) return -1;
+ if (ka != NULL && kb == NULL)
+ {
+ return 1;
+ }
- int aorder = -1;
- int border = -1;
+ if (ka == NULL && kb != NULL)
+ {
+ return -1;
+ }
const Key * kam = keyGetMeta (ka, "order");
const Key * kbm = keyGetMeta (kb, "order");
- if (kam) aorder = atoi (keyString (kam));
- if (kbm) border = atoi (keyString (kbm));
-
- if (aorder >= 0 && border >= 0) return aorder - border;
-
- if (aorder < 0 && border < 0) return 0;
-
- if (aorder < 0 && border >= 0) return -1;
-
- if (aorder >= 0 && border < 0) return 1;
-
- /* cannot happen anyway */
+ if (kam == NULL && kbm == NULL)
+ {
return 0;
}
+ if (kam != NULL && kbm == NULL)
+ {
+ return 1;
+ }
+ if (kam == NULL && kbm != NULL)
+ {
+ return -1;
+ }
+
+ return atoi (keyString (kam)) - atoi (keyString(kbm));
+}
/**
