7
7
*
8
8
*
9
9
* IDENTIFICATION
10
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.2 1996/07/15 19:11:23 scrappy Exp $
10
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.3 1996/08/26 20:38:52 scrappy Exp $
11
11
*
12
12
*-------------------------------------------------------------------------
13
13
*/
@@ -245,13 +245,18 @@ int32
245
245
bpcharle (char * arg1 , char * arg2 )
246
246
{
247
247
int len1 , len2 ;
248
+ int cmp ;
248
249
249
250
if (arg1 == NULL || arg2 == NULL )
250
251
return ((int32 ) 0 );
251
252
len1 = bcTruelen (arg1 );
252
253
len2 = bcTruelen (arg2 );
253
254
254
- return (strncmp (arg1 + 4 , arg2 + 4 , Min (len1 ,len2 )) <= 0 );
255
+ cmp = strncmp (arg1 + 4 , arg2 + 4 , Min (len1 ,len2 ));
256
+ if (0 == cmp )
257
+ return (int32 )(len1 <= len2 ? 1 : 0 );
258
+ else
259
+ return (int32 )(cmp <= 0 );
255
260
}
256
261
257
262
int32
@@ -276,24 +281,34 @@ int32
276
281
bpcharge (char * arg1 , char * arg2 )
277
282
{
278
283
int len1 , len2 ;
284
+ int cmp ;
279
285
280
286
if (arg1 == NULL || arg2 == NULL )
281
287
return ((int32 ) 0 );
282
288
len1 = bcTruelen (arg1 );
283
289
len2 = bcTruelen (arg2 );
284
290
285
- return (strncmp (arg1 + 4 , arg2 + 4 , Min (len1 ,len2 )) >= 0 );
291
+ cmp = strncmp (arg1 + 4 , arg2 + 4 , Min (len1 ,len2 ));
292
+ if (0 == cmp )
293
+ return (int32 )(len1 >= len2 ? 1 : 0 );
294
+ else
295
+ return (int32 )(cmp >= 0 );
286
296
}
287
297
288
298
int32
289
299
bpcharcmp (char * arg1 , char * arg2 )
290
300
{
291
301
int len1 , len2 ;
302
+ int cmp ;
292
303
293
304
len1 = bcTruelen (arg1 );
294
305
len2 = bcTruelen (arg2 );
295
306
296
- return (strncmp (arg1 + 4 , arg2 + 4 , Min (len1 ,len2 )));
307
+ cmp = strncmp (arg1 + 4 , arg2 + 4 , Min (len1 ,len2 ));
308
+ if ((0 == cmp ) && (len1 != len2 ))
309
+ return (int32 )(len1 < len2 ? -1 : 1 );
310
+ else
311
+ return cmp ;
297
312
}
298
313
299
314
/*****************************************************************************
@@ -369,13 +384,18 @@ int32
369
384
varcharle (char * arg1 , char * arg2 )
370
385
{
371
386
int len1 , len2 ;
387
+ int cmp ;
372
388
373
389
if (arg1 == NULL || arg2 == NULL )
374
390
return ((int32 ) 0 );
375
391
len1 = vcTruelen (arg1 );
376
392
len2 = vcTruelen (arg2 );
377
393
378
- return (strncmp (arg1 + 4 , arg2 + 4 , Min (len1 ,len2 )) <= 0 );
394
+ cmp = strncmp (arg1 + 4 , arg2 + 4 , Min (len1 ,len2 ));
395
+ if (0 == cmp )
396
+ return (int32 )( len1 <= len2 ? 1 : 0 );
397
+ else
398
+ return (int32 )(cmp <= 0 );
379
399
}
380
400
381
401
int32
@@ -400,24 +420,34 @@ int32
400
420
varcharge (char * arg1 , char * arg2 )
401
421
{
402
422
int len1 , len2 ;
423
+ int cmp ;
403
424
404
425
if (arg1 == NULL || arg2 == NULL )
405
426
return ((int32 ) 0 );
406
427
len1 = vcTruelen (arg1 );
407
428
len2 = vcTruelen (arg2 );
408
429
409
- return (strncmp (arg1 + 4 , arg2 + 4 , Min (len1 ,len2 )) >= 0 );
430
+ cmp = strncmp (arg1 + 4 , arg2 + 4 , Min (len1 ,len2 ));
431
+ if (0 == cmp )
432
+ return (int32 )(len1 >= len2 ? 1 : 0 );
433
+ else
434
+ return (int32 )(cmp >= 0 );
435
+
410
436
}
411
437
412
438
int32
413
439
varcharcmp (char * arg1 , char * arg2 )
414
440
{
415
441
int len1 , len2 ;
442
+ int cmp ;
416
443
417
444
len1 = vcTruelen (arg1 );
418
445
len2 = vcTruelen (arg2 );
419
-
420
- return (strncmp (arg1 + 4 , arg2 + 4 , Min (len1 ,len2 )));
446
+ cmp = (strncmp (arg1 + 4 , arg2 + 4 , Min (len1 ,len2 )));
447
+ if ((0 == cmp ) && (len1 != len2 ))
448
+ return (int32 )(len1 < len2 ? -1 : 1 );
449
+ else
450
+ return (int32 )(cmp );
421
451
}
422
452
423
453
/*****************************************************************************
0 commit comments