]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MINICERN/packlib/kernlib/kerngen/ccgen/lenocc.c
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / MINICERN / packlib / kernlib / kerngen / ccgen / lenocc.c
CommitLineData
fe4da5cc 1/*
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.3 1997/10/23 16:25:11 mclareni
6 * NT mods, mostly C Fortran interface
7 *
8 * Revision 1.2 1996/09/20 14:51:15 cernlib
9 * Linux added
10 *
11 * Revision 1.1.1.1 1996/02/15 17:49:20 mclareni
12 * Kernlib
13 *
14 */
15#include "kerngen/pilot.h"
16#if defined(CERNLIB_QMHPX)||defined(CERNLIB_QMOS9)
17#include "hpxgs/lenocc.c"
18#elif defined(CERNLIB_QMIRT)||defined(CERNLIB_QMIRTD)
19#include "irtgs/lenocc.c"
20#elif 1
21/*> ROUTINE LENOCC
22 CERN PROGLIB# M507 LENOCC .VERSION KERNVMI 1.06 920511
23 ORIG. 30/04/92, RDM + JZ
24
25 N = LENOCC (CHLINE) find last non-blank character in CHLINE
26*/
27#if defined(CERNLIB_QXNO_SC)
28 int type_of_call lenocc(chline, len)
29#elif defined(CERNLIB_QXCAPT)
30 int type_of_call LENOCC(chline, len)
31#else
32 int type_of_call lenocc_(chline, len)
33#endif
34 char *chline;
35 int len;
36{
37 static unsigned int blnk = 0x20202020;
38 unsigned int *wdcur;
39 char *chcur;
40 int ntail, i;
41
42 chcur = chline + len;
43 if (len <= 24) goto small;
44
45/* ---- handle long string */
46
47/* look at the last ntail characters */
48
49 ntail = ((int)chcur & 3);
50 for (i = ntail; i > 0; i--)
51 { if (*--chcur != ' ') goto exit; }
52
53/* look for trailing blank words */
54
55 wdcur = (unsigned int*) (chcur-4);
56 while (wdcur >= (unsigned int*)chline )
57 { if (*wdcur != blnk) break; wdcur--; }
58
59/* find last non-blank character */
60
61 chcur = (char*) (wdcur+1);
62 while (chcur > chline)
63 { if (*--chcur != ' ') goto exit; }
64 return 0;
65
66exit: return chcur+1 - chline;
67
68/* ---- handle short string */
69
70small:
71 while (chcur > chline)
72 { if (*--chcur != ' ') goto exit; }
73 return 0;
74}
75/*> END <----------------------------------------------------------*/
76#endif