#!/usr/bin/calc -q -s -f /* * fproduct - write the big Endian product of terms to a file * * usage: * fproduct filename term [term ...] * * filename where to write the product, use - for stdout * term ... terms to multiply * * Copyright (C) 2001,2014 Landon Curt Noll * * Calc is open software; you can redistribute it and/or modify it under * the terms of the version 2.1 of the GNU Lesser General Public License * as published by the Free Software Foundation. * * Calc is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General * Public License for more details. * * A copy of version 2.1 of the GNU Lesser General Public License is * distributed with calc under the filename COPYING-LGPL. You should have * received a copy with calc; if not, write to Free Software Foundation, Inc. * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * Under source code control: 2001/04/07 20:13:11 * File existed as early as: 2001 * * chongo <was here> /\oo/\ http://www.isthe.com/chongo/ * Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/ */ /* * parse args */ argc = argv(); if (argc < 2) { fprintf(files(2), "usage: %s term [term ...]\n", argv(0)); exit; } filename = argv(1); /* * build the product */ product = 1; for (i=2; i < argc; ++i) { product *= eval(argv(i)); } product = abs(product); /* * open the file for writing, "-" is stdout */ if (filename == "-") { fd = files(1); } else { fd = fopen(filename, "w"); if (!isfile(fd)) quit "be2file: cannot open file for writing"; } /* * write the octets to the file * * The most significant bits of the integer become the first file octets. */ if (product > 0) { octlen = int((highbit(product)+8) / 8); for (i=octlen-1; i >= 0; --i) { fputc(fd, char(product >> (i*8))); } } /* * cleanup */ if (filename != "-") { fclose(fd); }
Generated by dwww version 1.15 on Fri Jun 28 22:14:34 CEST 2024.