|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T c
Length: 3643 (0xe3b) Types: TextFile Names: »commands.c«
└─⟦3d0c2be1b⟧ Bits:30001254 ISODE-5.0 Tape └─⟦eba4602b1⟧ »./isode-5.0.tar.Z« └─⟦d3ac74d73⟧ └─⟦this⟧ »isode-5.0/others/max/commands.c« └─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦35176feda⟧ »EurOpenD22/isode/isode-6.tar.Z« └─⟦de7628f85⟧ └─⟦this⟧ »isode-6.0/others/max/commands.c«
/* commands.c - max -- built-in commands */ #include <stdio.h> #include "max.h" /* \f */ static int direction = 1; /* \f */ /* ARGSUSED */ void doSelect (tag, reason) caddr_t tag; unsigned long reason; { int value = (int) tag; Arg args[1]; register FI fi; remove_message (0); for (fi = curDI -> di_parts.fi_forw; fi != &curDI -> di_parts; fi = fi -> fi_forw) if (fi -> fi_selected != value) { if (fi -> fi_selected = value) fi -> fi_selectpos = ++numselected; XtSetArg (args[0], XtNvalue, &fi -> fi_selected); XtBooleanSetValues (fi -> fi_button, args, 1); } if (!value) numselected = 0; } /* \f */ /* ARGSUSED */ void doInvert (tag, reason) caddr_t tag; unsigned long reason; { Arg args[1]; register FI fi; remove_message (0); numselected = 0; for (fi = curDI -> di_parts.fi_forw; fi != &curDI -> di_parts; fi = fi -> fi_forw) { if (fi -> fi_selected = !fi -> fi_selected) fi -> fi_selectpos = ++numselected; XtSetArg (args[0], XtNvalue, &fi -> fi_selected); XtBooleanSetValues (fi -> fi_button, args, 1); } } /* \f */ /* ARGSUSED */ void doAdvance (tag, reason) caddr_t tag; unsigned long reason; { int next = (int) tag; char *cp; Arg args[1]; register FI fi, gi; UFexecMode mode; remove_message (0); if (next == 2) { next = direction; mode = (UFexecMode) reason; } else { direction = next; mode = UFexecEachFile; } switch (numselected) { case 0: fi = NULLFI; gi = next ? curDI -> di_parts.fi_forw : curDI -> di_parts.fi_back; break; case 1: if (next) { for (fi = curDI -> di_parts.fi_forw; fi != &curDI -> di_parts; fi = fi -> fi_forw) if (fi -> fi_selected) { gi = fi -> fi_forw; break; } } else for (fi = curDI -> di_parts.fi_back; fi != &curDI -> di_parts; fi = fi -> fi_back) if (fi -> fi_selected) { gi = fi -> fi_back; break; } break; default: display_message (NULLCP, "multiple selections"); return; } switch (mode) { case UFexecEachRegular: case UFexecAllRegulars: cp = "no appropriate selections"; while (gi != &curDI -> di_parts) { if (!FI_ISDIR (gi)) break; gi = next ? gi -> fi_forw : gi -> fi_back; } break; case UFexecEachDirectory: case UFexecAllDirectories: cp = "no appropriate selections"; while (gi != &curDI -> di_parts) { if (FI_ISDIR (gi)) break; gi = next ? gi -> fi_forw : gi -> fi_back; } break; default: cp = next ? "no next selection" : "no previous selection"; break; } if (gi == &curDI -> di_parts) { display_message (NULLCP, "%s", cp); return; } if (fi != NULLFI) { fi -> fi_selected = 0; XtSetArg (args[0], XtNvalue, &fi -> fi_selected); XtBooleanSetValues (fi -> fi_button, args, 1); numselected--; } gi -> fi_selected = gi -> fi_selectpos = 1; XtSetArg (args[0], XtNvalue, &gi -> fi_selected); XtBooleanSetValues (gi -> fi_button, args, 1); numselected++; } /* \f */ /* ARGSUSED */ void doCD (tag, reason) caddr_t tag; unsigned long reason; { register FI fi; if (numselected != 1) { display_message (NULLCP, numselected ? "too many selections" : "nothing selected"); return; } for (fi = curDI -> di_parts.fi_forw; fi != &curDI -> di_parts; fi = fi -> fi_forw) if (fi -> fi_selected) { if (FI_ISDIR (fi)) CDfnx ((caddr_t) fi, (unsigned long) 0); else display_message (NULLCP, "not a directory"); break; } }