int main ( int argc, char *argv[] ){ if ( argc != 2 ) /* argc should be 2 for correct execution */ { fprintf(stderr,"usage: %s valve_position\ne.g. \"./riech-o-mat 11000\"\n", argv[0] ); } else { /* Open device*/ devHandle = IowKitOpenDevice(); if (devHandle == NULL) { fprintf(stderr, "Error opening device \"iowarior\". make sure it's connected.\n"); exit(1); } /* Convert command line arg to dword*/ DWORD valvepos = 0xFFFF; int bitpos = 0; char* cp; for (cp = argv[1]; *cp != 0; ++cp, ++bitpos) { DWORD bit = (isValveOnChar(*cp) ? 1 : 0); valvepos = valvepos ^ (bit << bitpos); } iowHandle = IowKitGetDeviceHandle(1); IowKitSetWriteTimeout(iowHandle, 10); WriteSimple(iowHandle,valvepos); IowKitCloseDevice(devHandle); } return 0; }
// (<name1> <name2> ... <namen>) --> <dir>\<name1>\<name2>\...\<namen>.<ext> static FObject LibraryNameDeep(FObject dir, FObject nam, FObject ext) { FObject out = MakeStringOutputPort(); WriteSimple(out, dir, 1); while (PairP(nam)) { FAssert(SymbolP(First(nam)) || IntegerP(First(nam))); WriteCh(out, PathCh); WriteSimple(out, First(nam), 1); nam = Rest(nam); } FAssert(nam == EmptyListObject); WriteStringC(out, "."); WriteSimple(out, ext, 1); return(GetOutputString(out)); }
int main(int argc, char * argv[]) #endif // FOMENT_UNIX { int_t pdx = 0; int adx = 1; while (adx < argc) { if (StringCompareS(argv[adx], "-A") == 0) adx += 2; else if (StringCompareS(argv[adx], "-I") == 0) adx += 2; else if (StringCompareS(argv[adx], "-X") == 0) adx += 2; else if (argv[adx][0] != '-') { pdx = adx; break; } else if (StringCompareS(argv[adx], "-no-inline-procedures") == 0) { InlineProcedures = 0; adx += 1; } else if (StringCompareS(argv[adx], "-no-inline-imports") == 0) { InlineImports = 0; adx += 1; } else if (StringCompareS(argv[adx], "--validate-heap") == 0) { ValidateHeap = 1; adx += 1; } #ifdef FOMENT_WINDOWS else if (StringCompareS(argv[adx], "--section-table") == 0) { adx += 1; if (adx < argc) { #ifdef FOMENT_32BIT SectionTableBase = (void *) wcstol(argv[adx], 0, 16); #endif // FOMENT_32BIT #ifdef FOMENT_64BIT SectionTableBase = (void *) _wcstoui64(argv[adx], 0, 16); #endif // FOMENT_64BIT adx += 1; } } #endif // FOMENT_WINDOWS else if (StringCompareS(argv[adx], "--random-seed") == 0) { adx += 1; if (adx < argc) { RandomSeed = StringToInt(argv[adx]); adx += 1; } } else break; } FThreadState ts; try { SetupFoment(&ts); if (pdx > 0) { AddToLibraryPath(argv[pdx]); } } catch (FObject obj) { printf("Unexpected exception: SetupFoment: %p\n", obj); WriteSimple(R.StandardOutput, obj, 0); if (ValidateHeap) { FailedGC(); FailedExecute(); } return(1); } FAssert(argc >= 1); try { int adx = 1; while (adx < argc) { if (StringCompareS(argv[adx], "-A") == 0) { adx += 1; if (adx == argc) return(MissingArgument(argv[adx - 1])); FObject lp = R.LibraryPath; for (;;) { FAssert(PairP(lp)); if (Rest(lp) == EmptyListObject) break; lp = Rest(lp); } // AsPair(lp)->Rest = MakePair(MakeStringS(argv[adx]), EmptyListObject); SetRest(lp, MakePair(MakeStringS(argv[adx]), EmptyListObject)); adx += 1; } else if (StringCompareS(argv[adx], "-I") == 0) { adx += 1; if (adx == argc) return(MissingArgument(argv[adx - 1])); R.LibraryPath = MakePair(MakeStringS(argv[adx]), R.LibraryPath); adx += 1; } else if (StringCompareS(argv[adx], "-X") == 0) { adx += 1; if (adx == argc) return(MissingArgument(argv[adx - 1])); R.LibraryExtensions = MakePair(MakeStringS(argv[adx]), R.LibraryExtensions); adx += 1; } else if (StringCompareS(argv[adx], "-no-inline-procedures") == 0 || StringCompareS(argv[adx], "-no-inline-imports") == 0 || StringCompareS(argv[adx], "--validate-heap") == 0) adx += 1; #ifdef FOMENT_WINDOWS else if (StringCompareS(argv[adx], "--section-table") == 0) adx += 2; #endif // FOMENT_WINDOWS else if (StringCompareS(argv[adx], "--random-seed") == 0) adx += 2; else if (argv[adx][0] != '-') return(ProgramMode(adx, argc, argv)); else break; } R.LibraryPath = ReverseListModify(MakePair(MakeStringC("."), R.LibraryPath)); R.CommandLine = MakePair(MakeInvocation(adx, argv), MakeCommandLine(argc - adx, argv + adx)); ExecuteThunk(R.InteractiveThunk); ExitFoment(); return(0); // return(RunRepl(GetInteractionEnv())); } catch (FObject obj) { if (ExceptionP(obj) == 0) WriteStringC(R.StandardOutput, "exception: "); WriteSimple(R.StandardOutput, obj, 0); WriteCh(R.StandardOutput, '\n'); if (ValidateHeap) { FailedGC(); FailedExecute(); } return(-1); } }