News mods for long names
tektronix!davec
tektronix!davec
Sun Feb 20 00:14:33 AEST 1983
Attached are the mods for news2.9 to allow greater than 8 character
system names. The first file, gethostnm.c, simulates the gethostname
system call of 4.2BSD by looking for '#define sysname ...' lines
in /usr/include/whoami.h. The second file is a diff -c of the old
and new sources. In addition, the changes to news are ifdef'd by
TEK_SYSTEM.
Dave Clemans
Tektronix
******** gethostnm.c ********
/*
* simulate the 4.2a bsd system call by reading /usr/include/whoami.h
* and looking for the #define sysname
*/
#include <stdio.h>
#ifdef DEBUG
#define HDRFILE "whoami.h"
#else
#ifndef WHOAMI
#define HDRFILE "/usr/include/whoami.h"
#else
#define HDRFILE WHOAMI
#endif
#endif
gethostname(name, len)
char *name;
int len;
{
char buf[BUFSIZ];
char hname[32];
FILE *fd;
fd = fopen(HDRFILE, "r");
if (fd == NULL)
return(-1);
for (;;) { /* each line in the file */
if (fgets(buf, sizeof buf, fd) == NULL) {
strncpy(name, "hostunknown", len);
goto out;
}
if (sscanf(buf, "#define sysname \"%[^\"]\"", hname) == 1) {
strncpy(name, hname, len);
goto out;
}
}
out:
fclose(fd);
return(0);
}
******** news.diff ********
diff -r -c old/src/berknews.c new/src/berknews.c
*** old/src/berknews.c Mon Jun 21 14:02:58 1982
--- new/src/berknews.c Wed Dec 8 09:32:19 1982
***************
*** 11,16
#include <ctype.h>
#ifndef USG
#include <whoami.h>
struct utsname {
char Sysname[9];
char nodename[9];
--- 11,17 -----
#include <ctype.h>
#ifndef USG
#include <whoami.h>
+ #ifndef TEK_SYSTEM
struct utsname {
char Sysname[9];
char nodename[9];
***************
*** 17,22
char release[9];
char version[9];
};
#else
#include <sys/utsname.h>
#endif
--- 18,24 -----
char release[9];
char version[9];
};
+ #endif
#else
#include <sys/utsname.h>
#endif
***************
*** 67,72
char *punct;
char sysn[20];
int sysnl;
struct utsname ubuf;
if (argc < 4) {
--- 69,75 -----
char *punct;
char sysn[20];
int sysnl;
+ #ifndef TEK_SYSTEM
struct utsname ubuf;
#endif
***************
*** 68,73
char sysn[20];
int sysnl;
struct utsname ubuf;
if (argc < 4) {
fprintf(stderr, "Too few arguments.\n");
--- 71,77 -----
int sysnl;
#ifndef TEK_SYSTEM
struct utsname ubuf;
+ #endif
if (argc < 4) {
fprintf(stderr, "Too few arguments.\n");
***************
*** 81,86
sprintf(buffer, "%s - -m%s %s", argv[1], argv[2], argv[3]);
#endif
out = popen(buffer, "w");
uname(&ubuf);
strcpy(sysn, ubuf.nodename);
strcat(sysn, "!");
--- 85,91 -----
sprintf(buffer, "%s - -m%s %s", argv[1], argv[2], argv[3]);
#endif
out = popen(buffer, "w");
+ #ifndef TEK_SYSTEM
uname(&ubuf);
strcpy(sysn, ubuf.nodename);
#else
***************
*** 83,88
out = popen(buffer, "w");
uname(&ubuf);
strcpy(sysn, ubuf.nodename);
strcat(sysn, "!");
sysnl = strlen(sysn);
--- 88,96 -----
#ifndef TEK_SYSTEM
uname(&ubuf);
strcpy(sysn, ubuf.nodename);
+ #else
+ gethostname(sysn, sizeof sysn);
+ #endif
strcat(sysn, "!");
sysnl = strlen(sysn);
diff -r -c old/src/defs.h new/src/defs.h
*** old/src/defs.h Fri Jul 16 11:34:52 1982
--- new/src/defs.h Wed Dec 8 10:05:49 1982
***************
*** 47,52
#define PATHLEN 512 /* length of longest source string */
#define DATELEN 35 /* length of longest allowed date string */
#define NAMELEN 15 /* length of longest possible file name */
#define SNLN 8 /* max significant characters in sysname */
#define PROTO 'A' /* old protocol name */
#define NETCHRS "!:.@^" /* Punct. chars used for various networks */
--- 47,53 -----
#define PATHLEN 512 /* length of longest source string */
#define DATELEN 35 /* length of longest allowed date string */
#define NAMELEN 15 /* length of longest possible file name */
+ #ifndef TEK_SYSTEM
#define SNLN 8 /* max significant characters in sysname */
#else
#define SNLN 32 /* max significant characters in sysname */
***************
*** 48,53
#define DATELEN 35 /* length of longest allowed date string */
#define NAMELEN 15 /* length of longest possible file name */
#define SNLN 8 /* max significant characters in sysname */
#define PROTO 'A' /* old protocol name */
#define NETCHRS "!:.@^" /* Punct. chars used for various networks */
#define NGLN 14 /* max significant characters in newsgroup name */
--- 49,57 -----
#define NAMELEN 15 /* length of longest possible file name */
#ifndef TEK_SYSTEM
#define SNLN 8 /* max significant characters in sysname */
+ #else
+ #define SNLN 32 /* max significant characters in sysname */
+ #endif
#define PROTO 'A' /* old protocol name */
#define NETCHRS "!:.@^" /* Punct. chars used for various networks */
#define NGLN 14 /* max significant characters in newsgroup name */
diff -r -c old/src/inews.c new/src/inews.c
*** old/src/inews.c Sat Jun 26 20:27:31 1982
--- new/src/inews.c Wed Dec 8 09:35:04 1982
***************
*** 62,67
struct passwd *pw; /* struct for pw lookup */
struct group *gp; /* struct for group lookup */
struct srec srec; /* struct for sys file lookup */
struct utsname ubuf;
register int i;
--- 62,68 -----
struct passwd *pw; /* struct for pw lookup */
struct group *gp; /* struct for group lookup */
struct srec srec; /* struct for sys file lookup */
+ #ifndef TEK_SYSTEM
struct utsname ubuf;
#endif
register int i;
***************
*** 63,68
struct group *gp; /* struct for group lookup */
struct srec srec; /* struct for sys file lookup */
struct utsname ubuf;
register int i;
/* uuxqt doesn't close all it's files */
--- 64,70 -----
struct srec srec; /* struct for sys file lookup */
#ifndef TEK_SYSTEM
struct utsname ubuf;
+ #endif
register int i;
/* uuxqt doesn't close all it's files */
***************
*** 82,87
state = OPTION;
header.title[0] = header.nbuf[0] = filename[0] = '\0';
uname(&ubuf);
strcpy(SYSNAME, ubuf.nodename);
SYSNAME[SNLN] = '\0';
--- 84,90 -----
state = OPTION;
header.title[0] = header.nbuf[0] = filename[0] = '\0';
+ #ifndef TEK_SYSTEM
uname(&ubuf);
strcpy(SYSNAME, ubuf.nodename);
#else
***************
*** 84,89
header.title[0] = header.nbuf[0] = filename[0] = '\0';
uname(&ubuf);
strcpy(SYSNAME, ubuf.nodename);
SYSNAME[SNLN] = '\0';
setbuf(stdout, SYSBUF);
--- 87,95 -----
#ifndef TEK_SYSTEM
uname(&ubuf);
strcpy(SYSNAME, ubuf.nodename);
+ #else
+ gethostname(SYSNAME, sizeof SYSNAME);
+ #endif
SYSNAME[SNLN] = '\0';
setbuf(stdout, SYSBUF);
diff -r -c old/src/params.h new/src/params.h
*** old/src/params.h Mon Jun 21 14:03:14 1982
--- new/src/params.h Wed Dec 8 10:11:46 1982
***************
*** 13,18
#include <ctype.h>
#ifndef USG
struct utsname {
char sysname[9];
char nodename[9];
--- 13,19 -----
#include <ctype.h>
#ifndef USG
+ #ifndef TEK_SYSTEM
struct utsname {
char sysname[9];
char nodename[9];
***************
*** 19,24
char release[9];
char version[9];
};
#include <sys/timeb.h>
#else
#include <sys/utsname.h>
--- 20,26 -----
char release[9];
char version[9];
};
+ #endif
#include <sys/timeb.h>
#else
#include <sys/utsname.h>
***************
*** 48,53
extern char bfr[LBUFLEN],username[BUFLEN],userhome[BUFLEN];
extern char *SPOOL,*LIB,*CAND;
extern char *SUBFILE,*NGFILE,*ACTIVE;
extern char SYSNAME[],*NEWSU,*NEWSG;
extern char *LOCKFILE,*SEQFILE;
#ifndef SHELL
--- 50,56 -----
extern char bfr[LBUFLEN],username[BUFLEN],userhome[BUFLEN];
extern char *SPOOL,*LIB,*CAND;
extern char *SUBFILE,*NGFILE,*ACTIVE;
+ #ifndef TEK_SYSTEM
extern char SYSNAME[],*NEWSU,*NEWSG;
#else
extern char *NEWSU,*NEWSG;
***************
*** 49,54
extern char *SPOOL,*LIB,*CAND;
extern char *SUBFILE,*NGFILE,*ACTIVE;
extern char SYSNAME[],*NEWSU,*NEWSG;
extern char *LOCKFILE,*SEQFILE;
#ifndef SHELL
extern char *SHELL;
--- 52,61 -----
extern char *SUBFILE,*NGFILE,*ACTIVE;
#ifndef TEK_SYSTEM
extern char SYSNAME[],*NEWSU,*NEWSG;
+ #else
+ extern char *NEWSU,*NEWSG;
+ char SYSNAME[BUFLEN];
+ #endif
extern char *LOCKFILE,*SEQFILE;
#ifndef SHELL
extern char *SHELL;
diff -r -c old/src/readnews.c new/src/readnews.c
*** old/src/readnews.c Mon Jun 21 14:03:15 1982
--- new/src/readnews.c Wed Dec 8 09:39:13 1982
***************
*** 34,39
struct passwd *pw;
struct group *gp;
int i, optflag = FALSE, space = FALSE;
struct utsname ubuf;
char *myrc;
--- 34,40 -----
struct passwd *pw;
struct group *gp;
int i, optflag = FALSE, space = FALSE;
+ #ifndef TEK_SYSTEM
struct utsname ubuf;
#endif
char *myrc;
***************
*** 35,40
struct group *gp;
int i, optflag = FALSE, space = FALSE;
struct utsname ubuf;
char *myrc;
--- 36,42 -----
int i, optflag = FALSE, space = FALSE;
#ifndef TEK_SYSTEM
struct utsname ubuf;
+ #endif
char *myrc;
***************
*** 43,48
mode = UNKNOWN;
header.title[0] = header.nbuf[0] = '\0';
titlebuf[0] = coptbuf[0] = datebuf[0] = '\0';
uname(&ubuf);
strcpy(SYSNAME, ubuf.nodename);
SYSNAME[SNLN] = '\0';
--- 45,51 -----
mode = UNKNOWN;
header.title[0] = header.nbuf[0] = '\0';
titlebuf[0] = coptbuf[0] = datebuf[0] = '\0';
+ #ifndef TEK_SYSTEM
uname(&ubuf);
strcpy(SYSNAME, ubuf.nodename);
#else
***************
*** 45,50
titlebuf[0] = coptbuf[0] = datebuf[0] = '\0';
uname(&ubuf);
strcpy(SYSNAME, ubuf.nodename);
SYSNAME[SNLN] = '\0';
setbuf(stdout, SYSBUF);
--- 48,56 -----
#ifndef TEK_SYSTEM
uname(&ubuf);
strcpy(SYSNAME, ubuf.nodename);
+ #else
+ gethostname(SYSNAME, sizeof SYSNAME);
+ #endif
SYSNAME[SNLN] = '\0';
setbuf(stdout, SYSBUF);
diff -r -c old/src/readr.c new/src/readr.c
*** old/src/readr.c Mon Jun 21 14:03:16 1982
--- new/src/readr.c Wed Dec 8 09:42:31 1982
***************
*** 1007,1012
int notauthor;
{
FILE *inews;
struct utsname me;
char *p, *q;
char distgroup[64];
--- 1007,1013 -----
int notauthor;
{
FILE *inews;
+ #ifndef TEK_SYSTEM
struct utsname me;
#else
char SYSNAME[32];
***************
*** 1008,1013
{
FILE *inews;
struct utsname me;
char *p, *q;
char distgroup[64];
int pid;
--- 1009,1017 -----
FILE *inews;
#ifndef TEK_SYSTEM
struct utsname me;
+ #else
+ char SYSNAME[32];
+ #endif
char *p, *q;
char distgroup[64];
int pid;
***************
*** 1016,1021
pid = fork();
if (pid > 0)
return 0;
uname(&me);
strcpy(distgroup, hp->nbuf);
p = index(distgroup, '.');
--- 1020,1026 -----
pid = fork();
if (pid > 0)
return 0;
+ #ifndef TEK_SYSTEM
uname(&me);
#else
gethostname(SYSNAME, sizeof SYSNAME);
***************
*** 1017,1022
if (pid > 0)
return 0;
uname(&me);
strcpy(distgroup, hp->nbuf);
p = index(distgroup, '.');
q = index(p+1, '.');
--- 1022,1030 -----
return 0;
#ifndef TEK_SYSTEM
uname(&me);
+ #else
+ gethostname(SYSNAME, sizeof SYSNAME);
+ #endif
strcpy(distgroup, hp->nbuf);
p = index(distgroup, '.');
q = index(p+1, '.');
***************
*** 1021,1026
p = index(distgroup, '.');
q = index(p+1, '.');
if (notauthor)
sprintf(distgroup, "to.%s.ctl", me.nodename);
else if (p == 0)
sprintf(distgroup, "%s.msg.ctl", distgroup);
--- 1029,1035 -----
p = index(distgroup, '.');
q = index(p+1, '.');
if (notauthor)
+ #ifndef TEK_SYSTEM
sprintf(distgroup, "to.%s.ctl", me.nodename);
#else
sprintf(distgroup, "to.%s.ctl", SYSNAME);
***************
*** 1022,1027
q = index(p+1, '.');
if (notauthor)
sprintf(distgroup, "to.%s.ctl", me.nodename);
else if (p == 0)
sprintf(distgroup, "%s.msg.ctl", distgroup);
else if (q == 0)
--- 1031,1039 -----
if (notauthor)
#ifndef TEK_SYSTEM
sprintf(distgroup, "to.%s.ctl", me.nodename);
+ #else
+ sprintf(distgroup, "to.%s.ctl", SYSNAME);
+ #endif
else if (p == 0)
sprintf(distgroup, "%s.msg.ctl", distgroup);
else if (q == 0)
diff -r -c old/src/sendnews.c new/src/sendnews.c
*** old/src/sendnews.c Mon Jun 21 14:03:18 1982
--- new/src/sendnews.c Wed Dec 15 17:35:25 1982
***************
*** 7,12
#include <stdio.h>
#include <ctype.h>
#ifndef USG
struct utsname {
char Sysname[9];
char nodename[9];
--- 7,13 -----
#include <stdio.h>
#include <ctype.h>
#ifndef USG
+ #ifndef TEK_SYSTEM
struct utsname {
char Sysname[9];
char nodename[9];
***************
*** 13,18
char release[9];
char version[9];
};
#else
#include <sys/utsname.h>
#endif
--- 14,20 -----
char release[9];
char version[9];
};
+ #endif
#else
#include <sys/utsname.h>
#endif
***************
*** 34,39
char sysn[20];
int sysnl;
char *bnkludge;
struct utsname ubuf;
while (**(++argv) == '-') {
--- 36,42 -----
char sysn[20];
int sysnl;
char *bnkludge;
+ #ifndef TEK_SYSTEM
struct utsname ubuf;
#endif
***************
*** 35,40
int sysnl;
char *bnkludge;
struct utsname ubuf;
while (**(++argv) == '-') {
if (*++*argv == 'o')
--- 38,44 -----
char *bnkludge;
#ifndef TEK_SYSTEM
struct utsname ubuf;
+ #endif
while (**(++argv) == '-') {
if (*++*argv == 'o')
***************
*** 58,63
sprintf(buffer, "mail %s", *argv);
#endif
out = popen(buffer, "w");
uname(&ubuf);
strcpy(sysn, ubuf.nodename);
strcat(sysn, "!");
--- 62,68 -----
sprintf(buffer, "mail %s", *argv);
#endif
out = popen(buffer, "w");
+ #ifndef TEK_SYSTEM
uname(&ubuf);
strcpy(sysn, ubuf.nodename);
#else
***************
*** 60,65
out = popen(buffer, "w");
uname(&ubuf);
strcpy(sysn, ubuf.nodename);
strcat(sysn, "!");
sysnl = strlen(sysn);
bnkludge = "";
--- 65,73 -----
#ifndef TEK_SYSTEM
uname(&ubuf);
strcpy(sysn, ubuf.nodename);
+ #else
+ gethostname(sysn, sizeof sysn);
+ #endif
strcat(sysn, "!");
sysnl = strlen(sysn);
bnkludge = "";
***************
*** 75,80
#define HOSTNAME "OuterSpace"
#endif
/* Standard mail prelude to make the formatters happy */
fprintf(out, "To: %s\n", *argv);
fprintf(out, "Subject: network news article\n");
--- 83,90 -----
#define HOSTNAME "OuterSpace"
#endif
+ #ifdef notdef
+ /* Not needed at tek */
/* Standard mail prelude to make the formatters happy */
fprintf(out, "To: %s\n", *argv);
fprintf(out, "Subject: network news article\n");
***************
*** 79,84
fprintf(out, "To: %s\n", *argv);
fprintf(out, "Subject: network news article\n");
fprintf(out, "\n");
while (fgets(buffer, sizeof buffer, stdin)) {
if (fromline()) {
--- 89,95 -----
fprintf(out, "To: %s\n", *argv);
fprintf(out, "Subject: network news article\n");
fprintf(out, "\n");
+ #endif
while (fgets(buffer, sizeof buffer, stdin)) {
if (fromline()) {
***************
*** 115,120
punct = &buffer[5];
else
punct = buffer;
fiddle(punct);
}
}
--- 126,133 -----
punct = &buffer[5];
else
punct = buffer;
+ #ifdef notdef
+ /* no need for this at tek */
fiddle(punct);
#endif
}
***************
*** 116,121
else
punct = buffer;
fiddle(punct);
}
}
}
--- 129,135 -----
#ifdef notdef
/* no need for this at tek */
fiddle(punct);
+ #endif
}
}
}
***************
*** 210,215
strcpy(berkname, "G");
else if (eq(uucpname, "ucbcad"))
strcpy(berkname, "CAD");
else
strcpy(berkname, "UNKNOWN");
sprintf(buf, "%s:%s", berkname, rest);
--- 224,231 -----
strcpy(berkname, "G");
else if (eq(uucpname, "ucbcad"))
strcpy(berkname, "CAD");
+ else if (eq(uucpname, "tektronix"))
+ strcpy(berkname, "Tektronix");
else
strcpy(berkname, "UNKNOWN");
sprintf(buf, "%s @ %s", rest, berkname);
***************
*** 212,218
strcpy(berkname, "CAD");
else
strcpy(berkname, "UNKNOWN");
! sprintf(buf, "%s:%s", berkname, rest);
#ifdef debug
printf("berkname='%s', buf='%s'\n", berkname, buf);
#endif
--- 228,234 -----
strcpy(berkname, "Tektronix");
else
strcpy(berkname, "UNKNOWN");
! sprintf(buf, "%s @ %s", rest, berkname);
#ifdef debug
printf("berkname='%s', buf='%s'\n", berkname, buf);
#endif
diff -r -c old/src/uname.c new/src/uname.c
*** old/src/uname.c Mon Jun 21 14:03:18 1982
--- new/src/uname.c Wed Dec 8 09:48:34 1982
***************
*** 11,16
#include "params.h"
#define HDRFILE "/usr/include/whoami.h"
uname(uptr)
struct utsname *uptr;
--- 11,17 -----
#include "params.h"
#define HDRFILE "/usr/include/whoami.h"
+ #ifndef TEK_SYSTEM
uname(uptr)
struct utsname *uptr;
***************
*** 34,36
}
}
}
--- 35,38 -----
}
}
}
+ #endif
More information about the Comp.sources.unix
mailing list