Lines Matching refs:state

251 #define VISIBLE(f)	((f)->level<=0||(!state.ignore||!strmatch((f)->name,state.ignore))&&(!(state.lsflags&LS_NOBACKUP)||(f)->name[(f)->namelen-1]!='~')&&((state.lsflags&LS_ALL)||(f)->name[0]!='.'||(state.lsflags&LS_MOST)&&((f)->name[1]&&(f)->name[1]!='.'||(f)->name[2])))
294 #define BLOCKS(st) ((state.blocksize==LS_BLOCKSIZE)?iblocks(st):(state.blocksize>LS_BLOCKSIZE)?(iblocks(st)+state.blocksize/LS_BLOCKSIZE-1)/(state.blocksize/LS_BLOCKSIZE):iblocks(st)*(LS_BLOCKSIZE/state.blocksize))
296 #define BLOCKS(st) ((state.blocksize==LS_BLOCKSIZE)?iblocks(st):(iblocks(st)*LS_BLOCKSIZE+state.blocksize-1)/state.blocksize)
298 #define PRINTABLE(s) ((state.lsflags&LS_PRINTABLE)?printable(s):(s))
317 typedef struct /* list state */
325 typedef struct /* program state */
397 static State_t state;
413 if (state.lsflags & LS_ESCAPE)
415 if (!(state.lsflags & LS_QUOTE))
417 if (state.lsflags & LS_SHELL)
418 return fmtquote(s, "$'", "'", strlen(s), (state.lsflags & LS_ALWAYS) ? FMT_ALWAYS : 0);
429 if (state.lsflags & LS_QUOTE)
446 if (state.lsflags & LS_QUOTE)
485 if (!(kp = (Key_t*)hashget(state.keys, fp->t_str)))
494 kp->name = hashput(state.keys, 0, kp);
518 arg = state.timefmt;
531 arg = state.timefmt;
548 if (!state.scale)
558 if (state.scale)
560 s = fmtscale(n, state.scale);
565 if (ftw != state.top)
567 if (state.lsflags & LS_SEPARATE)
568 n = state.directories;
569 else if (state.lsflags & LS_LABEL)
582 s = state.flags;
616 sfprintf(state.tmp, "%s/%s", lp->dirnam + streq(lp->dirnam, "/"), ftw->name);
617 if (!(dirnam = sfstruse(state.tmp)))
675 arg = state.timefmt;
699 if (state.scale)
701 s = fmtscale(n, state.scale);
707 if (!state.scale)
709 n = state.total.blocks;
714 n = state.total.bytes;
715 if (state.scale)
717 s = fmtscale(n, state.scale);
722 n = state.total.files;
749 state.adjust -= (s - p) + i - 2;
767 arg = state.timefmt;
768 if ((unsigned long)n >= state.testdate)
770 n = state.testdate;
789 if (state.testsize)
791 ftw->statb.st_size <<= state.testsize;
802 if (ftw->level == 0 && (state.ftwflags & (FTW_META|FTW_PHYSICAL)) == (FTW_META|FTW_PHYSICAL) && !(ftw->info & FTW_D) && !lstat(ftw->path ? ftw->path : ftw->name, &ftw->statb) && S_ISLNK(ftw->statb.st_mode))
806 state.adjust = 0;
807 fill -= sfkeyprintf(sfstdout, lp, state.format, key, NiL) + state.adjust;
808 if (!(state.lsflags & LS_COMMAS))
841 if (!(state.lsflags & LS_COLUMNS) || length <= 0)
850 state.adjust = 2;
851 a = sfkeyprintf(state.tmp, lp, state.format, key, NiL) - 1;
852 w = a + state.adjust + 1;
854 sfstrseek(state.tmp, 0, SEEK_SET);
856 n = ((state.width - (length + BETWEEN + 2)) < 0) ? 1 : 2;
858 if (state.lsflags & LS_COMMAS)
862 n = state.width;
880 n = state.width - (length + w);
935 n = i / (state.width / (length + BETWEEN)) + 1;
937 if ((state.lsflags & LS_ACROSS) && n > 1)
951 if (w <= state.width)
953 } while (c < state.width / 2 && (n = (i + c) / (c + 1)) && ++c);
977 for (c = q; (c - q) < 2 && c <= state.width / (BETWEEN + 1); ++c)
980 if ((r = i - m * c) > state.height)
994 if (w <= state.width)
1135 if (!(state.lsflags & LS_DIRECTORY) && (state.ftwflags & FTW_MULTIPLE) && f1->level == 0)
1145 n = (*state.order)(f1, f2);
1146 return state.reverse ? -n : n;
1172 state.directories++;
1174 state.top = ftw;
1181 if (p->level == 0 && p->info == FTW_D && !(state.lsflags & LS_DIRECTORY))
1190 if (ftw->level < 0 || !(state.lsflags & LS_NOSTAT))
1207 if (!(state.lsflags & LS_RECURSIVE))
1217 state.total.blocks += list.count.blocks;
1218 state.total.bytes += list.count.bytes;
1219 state.total.files += list.count.files;
1221 state.lsflags |= LS_SEPARATE;
1226 state.directories++;
1227 state.top = 0;
1230 state.top = 0;
1232 state.top = ftw->link;
1259 if (state.lsflags & LS_DIRECTORY)
1264 if (state.lsflags & LS_DIRECTORY)
1270 if ((state.lsflags & LS_DIRECTORY) && ftw->level >= 0)
1272 if (!(state.lsflags & LS_RECURSIVE))
1278 if (ftw->level > 0 && !(state.lsflags & LS_NOSTAT))
1295 #define set(f) (opt_info.num?(state.lsflags|=(f)):((state.lsflags&=~(f)),0))
1296 #define clr(f) (opt_info.num?(state.lsflags&=~(f)):(state.lsflags|=(f)))
1318 state.ftwflags = ftwflags() | FTW_CHILDREN;
1319 if (!(fmt = sfstropen()) || !(state.tmp = sfstropen()))
1321 if (!(state.keys = hashalloc(NiL, HASH_name, "keys", 0)))
1324 hashput(state.keys, keys[n].name, &keys[keys[n].index]);
1325 hashset(state.keys, HASH_ALLOCATE);
1327 state.lsflags |= LS_COLUMNS;
1329 state.lsflags |= LS_MARK;
1331 state.lsflags |= LS_LONG;
1333 state.lsflags |= LS_RECURSIVE;
1335 state.lsflags |= LS_ACROSS|LS_COLUMNS;
1338 state.lsflags |= LS_COLUMNS;
1340 state.lsflags |= LS_PRINTABLE;
1342 state.endflags = state.flags;
1343 state.blocksize = 512;
1344 state.testdate = ~0;
1345 state.timefmt = "%?%l";
1346 lsflags = state.lsflags;
1358 state.lsflags &= ~LS_ATIME;
1359 state.lsflags |= LS_CTIME;
1360 if (!state.order)
1361 state.order = order_ctime;
1367 state.lsflags |= LS_LONG;
1368 state.timefmt = TIME_LONG_ISO;
1371 state.lsflags |= LS_ALL;
1372 state.lsflags &= ~(LS_BLOCKS|LS_LONG|LS_TIME);
1373 state.reverse = 0;
1374 state.order = order_none;
1379 state.lsflags |= LS_LONG|LS_NOUSER;
1381 state.lsflags |= LS_LONG|LS_NOGROUP;
1384 state.scale = 1024;
1390 state.blocksize = 1024;
1404 state.lsflags |= LS_LONG|LS_NOGROUP;
1406 state.lsflags |= LS_LONG|LS_NOUSER;
1415 state.reverse = !!opt_info.num;
1421 if (set(LS_TIME) && !state.order)
1422 state.order = order_mtime;
1425 state.lsflags &= ~LS_CTIME;
1426 state.lsflags |= LS_ATIME;
1427 if (!state.order)
1428 state.order = order_atime;
1431 state.width = strtol(opt_info.arg, &e, 0);
1434 state.height = state.width;
1435 state.width = strtol(e + 1, &e, 0);
1445 state.order = order_none;
1450 state.order = order_atime;
1453 state.order = order_ctime;
1456 state.order = 0;
1459 state.order = order_mtime;
1462 state.order = order_none;
1465 state.order = order_blocks;
1468 state.order = order_mtime;
1471 state.order = order_version;
1474 state.order = order_extension;
1486 state.timefmt = TIME_ISO;
1493 state.timefmt = TIME_FULL_ISO;
1496 state.timefmt = TIME_LONG_ISO;
1499 state.timefmt = TIME_LOCALE;
1513 state.timefmt = s;
1518 state.lsflags |= LS_MOST;
1519 state.lsflags &= ~LS_ALL;
1535 if (!(kp = (Key_t*)hashget(state.keys, opt_info.arg)))
1541 kp->name = hashput(state.keys, 0, kp);
1547 state.lsflags |= LS_STAT;
1551 state.lsflags |= LS_LONG;
1552 state.timefmt = TIME_FULL_ISO;
1558 state.ftwflags |= FTW_META|FTW_PHYSICAL;
1561 state.ignore = opt_info.arg;
1564 state.lsflags &= ~(LS_ALWAYS|LS_ESCAPE|LS_PRINTABLE|LS_QUOTE|LS_SHELL);
1568 state.lsflags |= LS_ESCAPE|LS_PRINTABLE|LS_QUOTE;
1571 state.lsflags |= LS_ESCAPE|LS_PRINTABLE;
1576 state.lsflags |= LS_PRINTABLE;
1579 state.lsflags |= LS_ESCAPE|LS_PRINTABLE|LS_QUOTE|LS_SHELL;
1582 state.lsflags |= LS_ALWAYS|LS_ESCAPE|LS_PRINTABLE|LS_QUOTE|LS_SHELL;
1590 state.ftwflags &= ~(FTW_META|FTW_PHYSICAL|FTW_SEEDOTDIR);
1596 state.ftwflags &= ~FTW_META;
1597 state.ftwflags |= FTW_PHYSICAL;
1606 state.order = order_blocks;
1612 state.order = order_none;
1622 if (kp = (Key_t*)hashget(state.keys, "name"))
1625 state.lsflags |= LS_STAT;
1631 state.timeflags = 0;
1635 state.timeflags = LS_ATIME;
1638 state.timeflags = LS_CTIME;
1649 state.lsflags |= LS_ACROSS|LS_COLUMNS;
1652 state.lsflags |= LS_COMMAS;
1655 state.lsflags |= LS_LONG;
1658 state.lsflags &= ~LS_ACROSS;
1659 state.lsflags |= LS_COLUMNS;
1662 state.lsflags &= ~(LS_ACROSS|LS_COLUMNS);
1668 state.lsflags &= ~LS_COLUMNS;
1677 state.blocksize = opt_info.num;
1680 state.scale = 1000;
1686 state.testdate = tmdate(opt_info.arg, &e, NiL);
1691 state.testsize = opt_info.num;
1703 if (!strchr(state.flags, n))
1704 *state.endflags++ = n;
1709 if (state.lsflags == (lsflags|LS_TIME))
1710 state.ftwflags |= FTW_SEEDOTDIR; /* keep configure happy */
1711 if (state.lsflags & LS_DIRECTORY)
1712 state.lsflags &= ~LS_RECURSIVE;
1713 if (!state.order)
1714 state.order = order_name;
1715 if (!state.timeflags)
1716 state.timeflags = state.lsflags;
1717 if (state.lsflags & (LS_COLUMNS|LS_COMMAS))
1719 if (state.lsflags & LS_LONG)
1720 state.lsflags &= ~(LS_COLUMNS|LS_COMMAS);
1723 if (!state.width)
1725 astwinsize(1, &state.height, &state.width);
1726 if (state.width <= 20)
1727 state.width = 80;
1729 if (state.height <= 4)
1730 state.height = 24;
1733 if (state.lsflags & LS_STAT)
1734 state.lsflags &= ~LS_NOSTAT;
1735 else if (!(state.lsflags & (LS_DIRECTORY|LS_BLOCKS|LS_LONG|LS_MARK|LS_MARKDIR|LS_TIME
1741 state.lsflags |= LS_NOSTAT;
1742 state.ftwflags |= FTW_DELAY|FTW_DOT;
1746 if (state.lsflags & LS_INUMBER)
1748 if (state.lsflags & LS_BLOCKS)
1750 if (state.lsflags & LS_LONG)
1753 if (!(state.lsflags & LS_NOUSER))
1754 sfprintf(fmt, " %%-8(uid)%c", (state.lsflags & LS_NUMBER) ? 'd' : 's');
1755 if (!(state.lsflags & LS_NOGROUP))
1756 sfprintf(fmt, " %%-8(gid)%c", (state.lsflags & LS_NUMBER) ? 'd' : 's');
1758 sfprintf(fmt, " %%(%s)s ", (state.timeflags & LS_ATIME) ? "atime" : (state.timeflags & LS_CTIME) ? "ctime" : "mtime");
1761 if (state.lsflags & LS_MARK)
1763 else if (state.lsflags & LS_MARKDIR)
1765 if (state.lsflags & LS_LONG)
1770 if (!(state.format = sfstruse(fmt)))
1774 sfprintf(sfstdout, "%s\n", state.format);
1777 stresc(state.format);
1786 state.lsflags |= LS_LABEL;
1787 state.ftwflags |= FTW_MULTIPLE;
1788 ftwalk((char*)argv, ls, state.ftwflags, order);
1791 ftwalk(".", ls, state.ftwflags, order);