mirage1@gpu.utcs.utoronto.ca (Cyber City) (02/21/91)
I was able to compile the DMAKE utility on my PC 286 with Minix 1.5, but it was necessary to replace the libc.a module tmpnam.o (for BCC) with a more standard tmpnam.o, which is includes the tempnam() function. I edited the DSB version below, replacing u_int with "unsigned int" and so on, and it seems to work well, except for a little conflict with the declaration of tempfile() in tempfile.c (estdio lib module). The tempnam() function is pretty standard in other C libraries I've seen, so perhaps this could be a permanent replacement. To make DMAKE, just type "make sysvr3", using your new libc.a. Here are some places to obtain DMAKE: Host uunet.uu.net (192.48.96.2) Location: comp.sources.misc/volume14 Host ab20.larc.nasa.gov (128.155.23.64) Location: usenet/comp.sources.misc/volume14 Host etlport.etl.go.jp (192.31.197.99) Location: pub/ibmpc/distrib Host hydra.helsinki.fi (128.214.4.29) Last updated 22:11 13 Feb 1991 Location: pub/archives/comp.sources.misc Host brolga.cc.uq.oz.au (130.102.128.5) Location: comp.sources.misc/volume14 Code for tmpnam.c follows: ========================== /* * Copyright (c) 1988 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted provided * that: (1) source distributions retain this entire copyright notice and * comment, and (2) distributions including binaries display the following * acknowledgement: ``This product includes software developed by the * University of California, Berkeley and its contributors'' in the * documentation or other materials provided with the distribution and in * all advertising materials mentioning features or use of this software. * Neither the name of the University nor the names of its contributors may * be used to endorse or promote products derived from this software without * specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)tmpnam.c 4.8 (Berkeley) 6/22/90"; #endif /* LIBC_SCCS and not lint */ #include <sys/param.h> #include <stdio.h> #define P_tmpdir "/usr/tmp" FILE * tmpfile() { FILE *fp; char *f, *tmpnam(); if (!(f = tmpnam((char *)NULL)) || !(fp = fopen(f, "w+"))) { fprintf(stderr, "tmpfile: cannot open %s.\n", f); return(NULL); } (void)unlink(f); return(fp); } char * tmpnam(s) char *s; { char *malloc(), *mktemp(); if (!s && !(s = malloc((unsigned int)MAXPATHLEN))) return(NULL); (void)sprintf(s, "%s/XXXXXX", P_tmpdir); return(mktemp(s)); } char * tempnam(dir, pfx) char *dir, *pfx; { char *f, *name, *getenv(), *malloc(), *mktemp(); if (!(name = malloc((unsigned int)MAXPATHLEN))) return(NULL); if (f = getenv("TMPDIR")) { (void)sprintf(name, "%s/%sXXXXXX", f, pfx ? "" : pfx); if (f = mktemp(name)) return(f); } if (dir) { (void)sprintf(name, "%s/%sXXXXXX", dir, pfx ? "" : pfx); if (f = mktemp(name)) return(f); } (void)sprintf(name, "%s/%sXXXXXX", P_tmpdir, pfx ? "" : pfx); if (f = mktemp(name)) return(f); (void)sprintf(name, "/tmp/%sXXXXXX", pfx ? "" : pfx); if (!(f = mktemp(name))) (void)free(name); return(f); } -- Robert Ames P.O. Box 724, Station 'A' 416-593-6000 Toronto, Ontario, Canada