]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MINICERN/packlib/kernlib/kerngen/ccgen/hpxgs/lenocc.c
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / MINICERN / packlib / kernlib / kerngen / ccgen / hpxgs / lenocc.c
1 /*
2  * $Id$
3  *
4  * $Log$
5  * Revision 1.1.1.1  1996/02/15 17:49:32  mclareni
6  * Kernlib
7  *
8  */
9 /*>    ROUTINE LENOCC
10   CERN PROGLIB# M507    LENOCC          .VERSION KERNHPX  1.02  920511
11   ORIG. 30/04/92, RDM + JZ
12
13   N = LENOCC (CHLINE)   find last non-blank character in CHLINE
14 */
15 #if defined(CERNLIB_QX_SC)
16       int lenocc_(chline, len)
17 #endif
18 #if defined(CERNLIB_QXNO_SC)
19       int lenocc(chline, len)
20 #endif
21       char  *chline;
22       int   len;
23 {
24       static unsigned int blnk = 0x20202020;
25       unsigned int *wdcur;
26       char  *chcur;
27       int   ntail, i;
28
29       chcur = chline + len;
30       if (len <= 24)               goto small;
31
32 /* ----        handle long string             */
33
34 /*        look at the last ntail characters   */
35
36       ntail = ((int)chcur & 3);
37       for (i = ntail; i > 0; i--)
38         { if (*--chcur != ' ')       goto exit; }
39
40 /*        look for trailing blank words   */
41
42       wdcur = (unsigned int*) (chcur-4);
43       while (wdcur >= (unsigned int*)chline )
44         {  if (*wdcur != blnk)   break;  wdcur--; }
45
46 /*        find last non-blank character   */
47
48       chcur = (char*) (wdcur+1);
49       while (chcur > chline)
50         {  if (*--chcur != ' ')      goto exit; }
51       return 0;
52
53 exit: return chcur+1 - chline;
54
55 /* ----        handle short string            */
56
57 small:
58       while (chcur > chline)
59         {  if (*--chcur != ' ')      goto exit; }
60       return 0;
61 }
62 /*> END <----------------------------------------------------------*/