|
|
1.1 ! root 1: #include "../h/rt.h" ! 2: ! 3: /* ! 4: * trim(s,c) - trim trailing characters in c from s. ! 5: */ ! 6: ! 7: Xtrim(nargs, arg2, arg1, arg0) ! 8: int nargs; ! 9: struct descrip arg2, arg1, arg0; ! 10: { ! 11: char *sloc; ! 12: char sbuf[MAXSTRING]; ! 13: int *cs, csbuf[CSETSIZE]; ! 14: static int spcset[CSETSIZE] = /* just a blank */ ! 15: cset_display(0, 0, 01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); ! 16: ! 17: /* ! 18: * s must be a string; c defaults to a cset containing a blank. ! 19: */ ! 20: if (cvstr(&arg1, sbuf) == NULL) ! 21: runerr(103, &arg1); ! 22: defcset(&arg2, &cs, csbuf, spcset); ! 23: ! 24: /* ! 25: * Start at the end of s and then back up until a character that is ! 26: * not in c is found. The actual trimming is done by having a descriptor ! 27: * that points at the string of s, but has a reduced length. ! 28: */ ! 29: arg0 = arg1; ! 30: sloc = STRLOC(arg1) + STRLEN(arg1) - 1; ! 31: while (sloc >= STRLOC(arg1) && tstb(*sloc, cs)) { ! 32: sloc--; ! 33: STRLEN(arg0)--; ! 34: } ! 35: } ! 36: ! 37: Procblock(trim,2)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.