/* -*-C-*- ******************************************************************************** * * File: cutil.c * Description: General utility functions * Author: Mark Seaman, SW Productivity * Created: Fri Oct 16 14:37:00 1987 * Modified: Wed Jun 6 16:29:17 1990 (Mark Seaman) marks@hpgrlt * Language: C * Package: N/A * Status: Reusable Software Component * * (c) Copyright 1987, Hewlett-Packard Company. ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at ** http://www.apache.org/licenses/LICENSE-2.0 ** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License. * ******************************************************************************** Revision 1.1 2007/02/02 23:39:07 theraysmith Fixed portability issues Revision 1.1.1.1 2004/02/20 19:39:06 slumos Import original HP distribution * Revision 1.3 90/03/06 15:39:10 15:39:10 marks (Mark Seaman) * Look for correct file of or * * Revision 1.2 90/01/15 13:02:13 13:02:13 marks (Mark Seaman) * Added memory allocator (*allocate) and (*deallocate) * * Revision 1.1 89/10/09 14:58:29 14:58:29 marks (Mark Seaman) * Initial revision **/ #include "cutil.h" #include "tprintf.h" #include "callcpp.h" #include #define RESET_COUNT 2000 void_proc deallocate = (void_proc) c_free_string; char_proc allocate = (char_proc) c_alloc_string; /********************************************************************** * long_rand * * Return a long random number whose value is less than limit. Do this * by calling the standard cheepo random number generator and reseting * it pretty often. **********************************************************************/ long long_rand(long limit) { #if RAND_MAX < 0x1000000 static long seed; long num; num = (long) rand () << 16; num |= rand () & 0xffff; seed ^= num; long result = num % limit; while (result < 0) { result += limit; } return result; #else return (long)((double)limit * rand()/(RAND_MAX + 1.0)); #endif } /********************************************************************** * open_file * * Open a file for reading or writing. If the file name parameter is * NULL use stdin (or stdout) for the file. If the file can not be * opened then call the error routine. **********************************************************************/ FILE *open_file(const char *filename, const char *mode) { FILE *thisfile = NULL; if ((thisfile = fopen (filename, mode)) == NULL) { tprintf ("Could not open file, %s\n", filename); exit (1); } return (thisfile); }