Changes for Chris to add back into source files:
marked RHP7 or rhp9 in source for 2.7q
Newer ones marked rhp11 in source
aaa/ in ftslib.c
char *fts_dir(char *s)
{
        static char bf[500];
#ifdef Mac
        sprintf(bf,"%s:%s",root,s);
#else
        sprintf(bf,"%s/%s",root,s);
#endif
        return bf;
}


aa/ in lib .c
int lib_str_start(void)
{
 	int r = atoi(config_get(C_STR_START));
	if (r==0) return 1200000;
/* rhp11 following line missing */
	return r;
}

a/in lib.c
int nt_getkey(char *ex, int nchan)
{
        FILE *f;
        char bf[BFSZ];
        time_t now;
        struct tm *t; 
        int users,flags;
        
#ifdef NOKREG
                strcpy(cur_key,"");
                return TRUE;
#endif
        now = time(NULL);
        t = localtime(&now);
        if (strlen(cur_key)==0) {
                f = fopen(DNEWS_KEYFILE,"r"); 
                if (f!=NULL) {
                        fgets(cur_key,BFSZ-1,f);
                        fclose(f);
                }
                f = fopen(nt_other(),"r"); 
                if (f!=NULL) {
                        fgets(cur_other,BFSZ-1,f);
                        fclose(f);
                }
                if (strncmp(cur_key,"55",2)==0) {
                        strcpy(cur_key,"");
#ifndef WIN32
                        strcpy(bf,key_make(0,0,0,2,nt_pcname()));
                        emsg("Key Auto Registering for Unix host {%s} \n",nt_pcname());
                        nt_setkey(bf);                                  
#endif
                }
                if (strlen(cur_key)==0) if (strlen(cur_other)!=0) {
                        strcpy(cur_key,cur_other);
                }
                if (strlen(cur_key)==0) {
                        t->tm_mon ++;
                        if (t->tm_mon==12) {t->tm_year++; t->tm_mon = 0;}
                        strcpy(bf,key_make(t->tm_mon,t->tm_year,0,2,nt_pcname()));
                        emsg("PC name is {%s} \n",nt_pcname());
                        nt_setkey(bf);
                }
        }       

        if (strcmp(cur_key,cur_other)!=0) {
                strcpy(ex,"License Key invalid");
                goto fail;
        }
        if (!key_test(cur_key,t->tm_mon,t->tm_year,&users,&flags,nt_pcname(),ex)) {
/*RHP11*/
/*RHP12  ... to be removed in a later version temp fix for change key from names to numbers*/
#ifdef Mac
			if (strstr(ex,"License for wrong pc")!=NULL){
                t->tm_mon ++;
                if (t->tm_mon==12) {t->tm_year++; t->tm_mon = 0;}
                strcpy(bf,key_make(t->tm_mon,t->tm_year,0,2,nt_pcname()));
                emsg("PC name is {%s} \n",nt_pcname());
                nt_setkey(bf);
                ex[0]=0;
                return TRUE;
            }
#endif
            emsg("Key no good {%s} {%s} \n",cur_key,ex);
            goto fail;
        } 
        if ((nchan-3>users) && (users!=0)) {
                strcpy(ex,"Sorry, your license does not permit this many connections");
                return FALSE;
        }
        return TRUE;
fail:
...
b/   in lib.c
a bit further down we have
/*RHP11 key stuff for mac*/
#ifdef Mac
char *nt_pcname(void){
        char *s = config_get(C_MYNAME);
        if (strlen(s)==0) return "noname";
        return s;
}


char *nt_other(void){
        static 	char bf[255];
        char 	tbf[255];
        char	other[255];
        OSErr 	iErr;
		FInfo	fndrInfo;
        short 	fVRefNum=0;
        long 	newDirID=0;
        FSSpec	fspec;
        
/* set path to real lock file to return */
		iErr = FindFolder(kOnSystemDisk,kSystemFolderType,kDontCreateFolder,&fVRefNum,&newDirID);
		iErr = FSMakeFSSpec(fVRefNum,newDirID,"\p::",&fspec);		
		sprintf(bf,"%s:System Folder:Preferences:dnews.lock",PtoCstr(fspec.name));
		/* emsg("****Other = %s\n",bf); */
		/* If real lock file exists hide it */
        strcpy(other,bf); CtoPstr(other);
		iErr = GetFInfo((const unsigned char *)other,kOnSystemDisk,&fndrInfo);
		if (iErr==noErr){//hide it
			/* emsg("****hide it\n"); */
			fndrInfo.fdType = '????';
			fndrInfo.fdCreator = '????';
			fndrInfo.fdFlags |= fInvisible;
			SetFInfo((const unsigned char *)other,kOnSystemDisk,&fndrInfo);
		}else{
			/* doesnt exist so see if old one does if so rename it	*/	 
			/* emsg("****  Look for old one\n"); */
	        strcpy(tbf,file_log("dnews.lock"));
	        strcpy(other,tbf); CtoPstr(other);
			iErr = GetFInfo((const unsigned char *)other,0,&fndrInfo);
			if (iErr==noErr){
				iErr = CatMove(0,0,(const unsigned char *)other,newDirID,"\p:Preferences:");
				if (iErr != noErr){/*try copy instead of rename*/
                	FILE *f;
                	char s[BFSZ];
                	f = fopen(DNEWS_KEYFILE,"r"); 
                	if (f!=NULL) {
                        fgets(s,BFSZ-1,f);
                        fclose(f);
 			        	f = fopen(bf,"w");
			        	if (f!=NULL){
			        		fprintf(f,"%s\n",s);                            
			        		fclose(f);
			        	}
			        }
               }
			}
		
        }
        return bf;
}
#endif
#ifndef Mac /*added*/
#ifndef WIN32
#ifndef NETWARE
...
and an extra #endif furhter down to match this added #ifndef Mac
1/ in sary.c only define true and false if not already defined
//RHP7 check if true false already defined
#ifndef false
#define false 0
#define true (!false)
#endif

2/ in dnews.c to give us a console window
/*RHP9 */
#ifdef Mac
	Handle	menuBar;
#endif
	if (running) return 0; /* Dont allow the service to start itself twice */
	running = TRUE;

/*RHP9 */
#define MacWindow
#ifdef Mac
#include <Memory.h>

// needed if we are going to run not in background - but kills it if we do run background only*/
// if we want a mac window rather than pure background
// use folowing MacWindow define and chaange background only flag in compiler
	SetApplLimit(GetApplLimit()-300000);
#ifdef MacWIndow
	InitGraf((Ptr) &qd.thePort);
	InitFonts();
	InitWindows();
	InitMenus();
	InitDialogs(nil);
	TEInit();
	InitCursor();

	//Setup our menus
	#define rMenuBar 128
	menuBar = GetNewMBar(rMenuBar);			/* read menus into menu bar */
	//if ( menuBar == nil )
	//			DieWithError(eNoMemory,0);
	SetMenuBar(menuBar);					/* install menus */
	DisposHandle(menuBar);
	AddResMenu(GetMHandle(128), 'DRVR');	/* add DA names to Apple menu */
	DrawMenuBar();


#endif
#endif

3/in lib.c doevents routine changed to
void lib_doevents(void) /* Call this during any time consuming activity */
{
#ifdef Mac
	/*RHP9 - Use our event check routine*/
	CheckEvents();
	/*EventRecord theEvent;
    //RHP7 - wait next event call less often but for longer
    static long time_for_next_WNE = 0;
    if (LMGetTicks()>time_for_next_WNE){
		WaitNextEvent(0, &theEvent, 6, nil);
		time_for_next_WNE = LMGetTicks() + 3;
	}*/
#endif
#ifdef NETWARE
        delay(1); 
#endif
}



**1,3,5,6 below  had to be re added in 2.7q

marked with RHP6  for 2.60a*/
1/ In conf.c
char *get_dconfig(void)
{
/*RHP6 removed dnews_top from next line*/
        if (strlen(dnews_conf)==0) sprintf(dnews_conf,":%s.conf",dnews_name);

2/ In emsg.c
/*RHP6 no tzset*/
#ifndef Mac
#ifdef unix
	if (!done_init) {
		tzset();
		done_init = TRUE;
	}
#endif
#endif
//**2.7q fixed as ...
#ifdef unix
	if (!done_init) {
#ifndef Mac
		tzset();
#endif
		done_init = TRUE;
	}
#endif


3/ In ftslib.c near top
/*RHP6 mac didnt like fcntl.h*/
#ifdef __MWERKS__
#include "Mac.h"
#else
#include <fcntl.h>
#endif

4/ **2.7q fixed   not needed any more
a bit further down in ftslib.c
/*RHP6 word_upto redfined five line down so just removed this one
static int word_upto,point_upto;*/
static int point_upto;

static MWORD *words[HASH_WORDS];
static GLIST *groups[HASH_WORDS];
static int group_next,word_next,word_upto;
static int stat_nwords, stat_nunique;
static int ncached=0;
static int total_items;

5/ further down on ftslib.c
int fts_fix_word( char *xx)
{
/*RHP6 mac needed cast of char to unsigned char*/
        unsigned char *s = (unsigned char *)xx;
        unsigned char *ss = (unsigned char *)xx;

6/  in ftslib.h 
/*RHP6 Point conflicted with mac structure so renamed DPoint*/
typedef struct DPoint {short group; int item; char score;} DPOINT;
typedef struct Glist {char *word; int idx; struct Glist *next;} GLIST;

#define PSIZE 7
/* Base the item from the group with 32K signed offset either way.  */
/* 5 bytes */

7/ in suck.c ** doesnt seem to be aa problem in 2.7q
/*RHP6 replaced item_i with item_ii as my compiler wouldnt allow redefinition*/
static int item_ii, item_end;
static int stopnow;
int suck_stream_group(char *bf, int sz)
{

--------- old changes -------

/*marked with /*RHP5

1/ In str.c

int str_read(String *s, char *fname)
{
        FILE *f;
        char inbuff[2001];
        int i;
        char *e;

        str_copys(s,"",0);
        f = fopen(fname,"rb");/*RHP5 make it binary to stop mac stuffing up crlf*/

2/ in ncmd.c
void dnews_manager_report(char *subj)
{
        String *xnew;
        char bf[300],to[300];


        SysBeep(1);
        ncpy(bf,config_get(C_REPORT),100);
        strlwr(bf); if (strstr(bf,"no")!=NULL) return;

        ncpy(to,config_get(C_MANAGER),100);

        xnew = str_new();
		/*RHP5 changed from field to use new config option to make massey work*/
        sprintf(bf,"From: %s\015\012",config_get(C_MAIL_FROM)); str_copysn(xnew,bf);
         
3/ in conf.c
void config_load(void)
{
        int i,j;
        char nam[201];
        char bf[501];
        char bf3[501];
        if (config!=NULL) s_free(config);
        config = s_alloc();
        s_read(config,DNEWS_CONFIG);
        if (s_len(config)==0) {
                printf("Unable to find config file {%s} \n",DNEWS_CONFIG);
                exit(1);
        }
        for (i=0; i<MAX_CONF; i++) conf_true[i] = FALSE;
	/* conf_true[C_NNTP_SLOW] = TRUE;*/
        for (i=0; i<s_len(config); i++) {
                ncpy(bf,s_line(config,i),500);
                ncpy(nam,get_word(bf,0),100);
                strupr(nam);
                if (*nam=='#') continue;
                for (j=0; conf_name[j]!=NULL; j++) {
                        if (strcmp(nam,conf_name[j])==0) {
xxx:                            conf_value[j] = mystrdup(get_rest(bf,1));
                                ncpy(bf3,conf_value[j],30);
                                strlwr(bf3); 
                                if (strstr(bf3,"false")!=NULL) conf_true[j] = FALSE;
                                if (strstr(bf3,"true")!=NULL) conf_true[j] = TRUE;
                                if (strstr(bf3,"on")!=NULL) conf_true[j] = TRUE;
                                str_trimtabs(conf_value[j]);
                                break;
                        }
			if (strcmp(nam,"nntp_suck")==0) {j=C_NNTP_SUCK1; goto xxx;}
			if (strcmp(nam,"nntp_suck1")==0) {j=C_NNTP_SUCK1; goto xxx;}
                }
                if (conf_name[j]==NULL) if (strlen(bf)>0) {
                        printf("lib: Configuration line problem {%s} \n",bf);
                }
        }
        if (conf_value[C_MANAGER]==NULL) conf_value[C_MANAGER] = mystrdup("usenet");
        if (conf_value[C_MYNAME]==NULL) conf_value[C_MYNAME] = mystrdup(nntp_hostname());
        if (conf_value[C_FROM]==NULL) conf_value[C_FROM] = mystrdup(DNEWS_NAME);
        if (conf_value[C_EXPIRE_CHUNK]==NULL) conf_value[C_EXPIRE_CHUNK] = mystrdup("200000");
        if (conf_value[C_DF]==NULL) conf_value[C_DF] = mystrdup("df");
        /*RHP5 set a default value for C_MAIL_FROM to what it was previously*/
        if (conf_value[C_MAIL_FROM]==NULL){
        	 sprintf(bf,"%s@%s",DNEWS_NAME,conf_value[C_MYNAME]);
        	 conf_value[C_MAIL_FROM] = mystrdup(bf);
        }
}

4/ in conf.h added "C_MAIL_FROM" and "MAIL_FROM" to end of enum and conf_name array.
