Beispiel #1
0
int main(int argc, char* argv[])
{
  char group;
  int pid = atoi(argv[1]);
  
  if (argc != 3)
  {
    printf("> Usage: %s <app_pid> <new_group:A/B/C>\n", argv[0]);
    return 0;
  }
  
  group = getgroup(pid);
  printf("> Process pid=%d is of group '%c'\n", pid, group);
  
  group = argv[2][0];
  if (group <'A' || group > 'C')
  {
    printf("> Invalid group code. Only A,B or C is allowed\n");
    return 0;
  }
  
  printf("> Changing group to '%c'...\n", group);
  setgroup(pid, group);
  
  group = getgroup(pid);
  printf("> Process pid=%d is now of group '%c'\n", pid, group);
  return 0;
}
Beispiel #2
0
/*
 * Setup standard FHS 2.3 structure in /var, and
 * write runlevel to UTMP, needed by, e.g., printerdrake.
 */
static void setup(void *UNUSED(arg))
{
#ifdef RUNLEVEL
	struct utmp entry;
#endif

	_d("Setting up FHS structure in /var ...");
	makedir("/var/cache",      0755);
	makedir("/var/games",      0755);
	makedir("/var/lib",        0755);
	makedir("/var/lib/misc",   0755);
	makedir("/var/lib/alarm",  0755);
	makedir("/var/lock",       0755);
	makedir("/var/log",        0755);
	makedir("/var/mail",       0755);
	makedir("/var/opt",        0755);
	makedir("/var/run",        0755);
	makedir("/var/spool",      0755);
	makedir("/var/spool/cron", 0755);
	makedir("/var/tmp",        0755);
	makedir("/var/empty",      0755);

	_d("Setting up necessary UTMP files ...");
	touch("/var/run/utmp");
	chown("/var/run/utmp", 0, getgroup("utmp"));

#ifdef RUNLEVEL
	memset(&entry, 0, sizeof(struct utmp));
	entry.ut_type = RUN_LVL;
	entry.ut_pid = '0' + RUNLEVEL;
	setutent();
	pututline(&entry);
	endutent();
#endif

#ifdef TOUCH_ETC_NETWORK_RUN_IFSTATE
	touch("/etc/network/run/ifstate");
#else
	erase("/etc/network/run/ifstate");
#endif

	_d("Setting up misc files ...");
	makedir("/var/run/lldpd",  0755); /* Needed by lldpd */
	makedir("/var/run/pluto",  0755); /* Needed by Openswan */
	makedir("/var/run/quagga", 0755); /* Needed by Quagga */
	makedir("/var/log/quagga", 0755); /* Needed by Quagga */
	makedir("/var/run/sshd", 01755);  /* OpenSSH  */
	makefifo("/dev/xconsole", 0640);  /* sysklogd */
	chown("/dev/xconsole", 0, getgroup("tty"));
}
Beispiel #3
0
void setgroup(const char *group)
{
	gid_t gid;

	if (!strlen(group)) {
		return;
	}

	if (getuid() != 0 && geteuid() != 0) {
		printf("Error: Group can only be set as root.\n");
		exit(EXIT_FAILURE);
	}

	if (isnumeric(group) && atoi(group) == 0) {
		return;
	}

	gid = getgroup(group);

	if (debug)
		printf("switching to group id %d.\n", gid);

	if (setgid(gid) != 0) {
		perror("Error: setgid");
		exit(EXIT_FAILURE);
	}
}
Beispiel #4
0
void updatedirowner(const char *dir, const char *user, const char *group)
{
	DIR *d;
	struct dirent *di;
	struct stat statbuf;
	char entryname[512];
	uid_t uid;
	gid_t gid;

	if (!cfg.updatefileowner) {
		return;
	}

	if (getuid() != 0 && geteuid() != 0) {
		if (debug)
			printf("user not root, skipping chmod\n");
		return;
	}

	uid = getuser(user);
	gid = getgroup(group);

	if (stat(dir, &statbuf)!=0) {
		return;
	}

	if (statbuf.st_uid != uid || statbuf.st_gid != gid) {
		if (chown(dir, uid, gid) != 0) {
			if (debug)
				printf("Error: updatedirowner() chown() \"%s\": %s\n", dir, strerror(errno));
			return;
		} else {
			if (debug)
				printf("\"%s\" chown completed\n", dir);
		}
	}

	if ((d=opendir(dir))==NULL) {
		if (debug)
			printf("Error: updatedirowner() diropen() \"%s\": %s\n", dir, strerror(errno));
		return;
	}

	while ((di=readdir(d))) {
		if (di->d_type != DT_REG) {
			continue;
		}
		snprintf(entryname, 512, "%s/%s", dir, di->d_name);
		if (stat(entryname, &statbuf)!=0) {
			continue;
		}
		if (statbuf.st_uid != uid || statbuf.st_gid != gid) {
			if (chown(entryname, uid, gid) != 0) {
				if (debug)
					printf("Error: chown() \"%s\": %s\n", entryname, strerror(errno));
			} else {
				if (debug)
					printf("\"%s\" chown completed\n", entryname);
			}
		}
	}

	closedir(d);
}
Beispiel #5
0
static int get_ics_info(faacDecHandle hDecoder, byte *win, byte *wshape, byte *group, byte *max_sfb,
                 int *lpflag, int *prstflag, NOK_LT_PRED_STATUS *nok_ltp_status,
                 NOK_LT_PRED_STATUS *nok_ltp_status_right, int stereo_flag)
{
    Info *info;
    int i, j;

    int max_pred_sfb = pred_max_bands(hDecoder);

    faad_get1bit(&hDecoder->ld); /* reserved bit */
    *win = (unsigned char)faad_getbits(&hDecoder->ld, LEN_WIN_SEQ);
    *wshape = (unsigned char)faad_get1bit(&hDecoder->ld); /* window shape */
    if ((info = hDecoder->winmap[*win]) == NULL)
        /* CommonExit(1, "bad window code"); */
        return 0;

    /*
     * max scale factor, scale factor grouping and prediction flags
     */
    prstflag[0] = 0;
    if (info->islong) {
        *max_sfb = (unsigned char)faad_getbits(&hDecoder->ld, LEN_MAX_SFBL);
        group[0] = 1;

        if (hDecoder->mc_info.object_type != AACLTP) {
            if ((lpflag[0] = faad_getbits(&hDecoder->ld, LEN_PRED_PRES))) {
                if ((prstflag[0] = faad_getbits(&hDecoder->ld, LEN_PRED_RST))) {
                    for(i=1; i<LEN_PRED_RSTGRP+1; i++)
                        prstflag[i] = faad_getbits(&hDecoder->ld, LEN_PRED_RST);
                }
                j = ( (*max_sfb < max_pred_sfb) ?
                    *max_sfb : max_pred_sfb ) + 1;
                for (i = 1; i < j; i++)
                    lpflag[i] = faad_getbits(&hDecoder->ld, LEN_PRED_ENAB);
                for ( ; i < max_pred_sfb+1; i++)
                    lpflag[i] = 0;
            }
        } else { /* AAC LTP */
            if(faad_get1bit(&hDecoder->ld))
            {
                nok_lt_decode(hDecoder, *max_sfb, nok_ltp_status->sbk_prediction_used,
                    nok_ltp_status->sfb_prediction_used,
                    &nok_ltp_status->weight,
                    nok_ltp_status->delay);

                if(stereo_flag)
                    nok_lt_decode(hDecoder, *max_sfb, nok_ltp_status_right->sbk_prediction_used,
                        nok_ltp_status_right->sfb_prediction_used,
                        &nok_ltp_status_right->weight,
                        nok_ltp_status_right->delay);
            } else {
                nok_ltp_status->sbk_prediction_used[0] = 0;
                if(stereo_flag)
                    nok_ltp_status_right->sbk_prediction_used[0] = 0;
            }
        }
    } else {
        *max_sfb = (unsigned char)faad_getbits(&hDecoder->ld, LEN_MAX_SFBS);
        getgroup(hDecoder, info, group);
        lpflag[0] = 0;
        nok_ltp_status->sbk_prediction_used[0] = 0;
        if(stereo_flag)
            nok_ltp_status_right->sbk_prediction_used[0] = 0;
    }

    return 1;
}
Beispiel #6
0
PROTO int group(const char *group, char nogroupecho)
{
        char b[MAX_SERVERRSP];
        ACTIVE *newgroup;
        SERVER *svr;
        CLEARBUF

        if ( nullstr(group) )
        {
                swriteclient(client,"500 You must select a group\r\n");
                return 1;
        }
  
        /* only change group if it has changed */
        if ( client->group == NULL || strcmp(client->group->newsgroup, group) != 0 ) 
        {
                /* check for read permission */
                if ( ! match_expression((unsigned char *)group
                                        , (unsigned char *)getwildmat(client->user->readpat)
                                        , 0) ) 
                {
                        if ( ! nogroupecho )
                                swriteclient(client, MSG_NOSUCHGROUP);
                        return 1;
                }

                /* find and load our new group */
                if ( (newgroup = getgroup(group)) == NULL ) 
                {
                        if ( ! nogroupecho )
                                swriteclient(client, MSG_NOSUCHGROUP);
                        return 1;
                }

                if ( (svr=getserver(newgroup->server)) == NULL )
                        return swriteclient(client, "500 Cant find server for group\r\n");

                /* disconnect first if we have to change server */
                if ( client->groupserver != NULL &&
                        client->connected == 1 &&
                        strcmp(svr->Groups, client->groupserver->Groups) != 0 )
                {
                        disconnect_server(client);
                }

                /* close group and reconnect */
                closegroup();
                client->group = newgroup;

                switch ( connect_groupserver(client, svr->Name) )
                {
                        case CONNECT_ERR:
                                return swriteclient(client, "500 Error selecting server\r\n");

                        case CONNECT_DOWN:
                                sleep(cfg.DownDelay);
                                return writeclient(client, MSG_SERVER_DOWN);

                        default:
                                break;
                }

                /* reset by connect_groupserver (via disconnect_server FIXME) */
                client->group = newgroup;

                client->groups++;
        }

        if ( ! writeserver(client, "GROUP %s\r\n", group) ) return -1;
        if ( ! readserver(client, b, MAX_SERVERRSP-1) ) return -1;

        syslog(LOG_NOTICE, "%s: group %s", client->hostname, group);

        if ( ! nogroupecho ) return swriteclient(client,b);
        return 0;
}
Int get_ics_info(
    const tMP4AudioObjectType  audioObjectType,
    BITS                      *pInputStream,
    const Bool                 common_window,
    WINDOW_SEQUENCE           *pWindowSequence,
    WINDOW_SHAPE              *pWindowShape,
    Int                        group[],
    Int                       *p_max_sfb,
    FrameInfo                 *p_winmap[],
    LT_PRED_STATUS            *pFirstLTPStatus,
    LT_PRED_STATUS            *pSecondLTPStatus)
{
    WINDOW_SEQUENCE       windowSequence;
    UInt                  temp;
    Bool                  predictor_data_present;
    UInt                   local_max_sfb;
    UInt                   allowed_max_sfb;
    Int                   status = SUCCESS;
    Bool                  first_ltp_data_present = FALSE;
    Bool                  second_ltp_data_present = FALSE;

    /*
     * The following three calls to getbits have been replaced with one
     * call for speed:
     *
     *                  getbits(LEN_ICS_RESERV, pInputStream);
     * windowSequence = getbits(LEN_WIN_SEQ, pInputStream);
     * *pWindowShape  = getbits(LEN_WIN_SH, pInputStream);
     *
     */

    temp =
        get9_n_lessbits(
            LEN_ICS_RESERV + LEN_WIN_SEQ + LEN_WIN_SH,
            pInputStream);


    windowSequence = (WINDOW_SEQUENCE)((temp >> LEN_WIN_SH) & ((0x1 << LEN_WIN_SEQ) - 1));

    *pWindowShape = (WINDOW_SHAPE)((temp) & ((0x1 << LEN_WIN_SH) - 1));

    /*
     * This pointer should not be NULL as long as the initialization code
     * has been run, so the test for NULL has been removed.
     */
    allowed_max_sfb = p_winmap[windowSequence]->sfb_per_win[0];

    if (windowSequence == EIGHT_SHORT_SEQUENCE)
    {
        local_max_sfb =  get9_n_lessbits(LEN_MAX_SFBS,
                                         pInputStream);

        getgroup(
            group,
            pInputStream);

        if (local_max_sfb > allowed_max_sfb)
        {
            status = 1;  /* ERROR CODE - needs to be updated */
        }

    } /* end of TRUE of if (windowSequence == EIGHT_SHORT_SEQUENCE) */
    else
    {
        /* There is only one group for long windows. */
        group[0] = 1;

        /*
         * The window is long, get the maximum scale factor bands,
         * and get long term prediction info.
         *
         * Reference [1] states that the audioObjectType is first tested,
         * then the predictor_data_present is read on either branch of the
         * if (audioObjectType == MP4AUDIO_LTP). Instead, this code combines
         * the two calls on both branches into one before the
         * if, and then in turn combines with another call to getbits, all
         * in the name of speed.
         *
         * This would be the individual calls, without checking the number
         * of scale factor bands:
         *
         *   local_max_sfb =
         *      (Int) getbits(
         *          LEN_MAX_SFBL,
         *           pInputStream);
         *
         *  if (audioObjectType == MP4AUDIO_LTP)
         *  {
         *        predictor_data_present =
         *           (Bool) getbits(
         *              LEN_PREDICTOR_DATA_PRESENT,
         *              pInputStream);
         *
         *     .....   (read LTP data)
         *
         *    }
         *    else
         *    {
         *
         *        predictor_data_present =
         *           (Bool) getbits(
         *              LEN_PREDICTOR_DATA_PRESENT,
         *              pInputStream);
         *
         *     .....   (its an error for this library)
         *     }
         */
        temp =
            get9_n_lessbits(
                LEN_MAX_SFBL + LEN_PREDICTOR_DATA_PRESENT,
                pInputStream);

        local_max_sfb = (Int)(temp >> LEN_PREDICTOR_DATA_PRESENT);

        predictor_data_present =
            (Bool)(temp & ((0x1 << LEN_PREDICTOR_DATA_PRESENT) - 1));

        if (local_max_sfb > allowed_max_sfb)
        {
            status = 1;  /* ERROR CODE - needs to be updated */
        }
        else if (audioObjectType == MP4AUDIO_LTP)
        {
            /*
             * Note that the predictor data bit has already been
             * read.
             */

            /*
             * If the object type is LTP, the predictor data is
             * LTP. If the object type is not LTP, the predictor data
             * is so called "frequency predictor data", which is not
             * supported by this implementation. Refer to (1)
             */
            if (predictor_data_present != FALSE)
            {
                first_ltp_data_present =
                    (Bool) get1bits(/*                        LEN_LTP_DATA_PRESENT,*/
                        pInputStream);

                if (first_ltp_data_present != FALSE)
                {
                    lt_decode(
                        windowSequence,
                        pInputStream,
                        local_max_sfb,
                        pFirstLTPStatus);
                }
                if (common_window != FALSE)
                {
                    second_ltp_data_present =
                        (Bool) get1bits(/*                            LEN_LTP_DATA_PRESENT,*/
                            pInputStream);

                    if (second_ltp_data_present != FALSE)
                    {
                        lt_decode(
                            windowSequence,
                            pInputStream,
                            local_max_sfb,
                            pSecondLTPStatus);
                    }
                } /* if (common_window != FALSE) */

            } /* if (predictor_data_present != FALSE) */

        } /* else if (audioObjectType == MP4AUDIO_LTP) */
        else
        {
            /*
             * Note that the predictor data bit has already been
             * read.
             */

            /*
             * The object type is not LTP. If there is data, its
             * frequency predictor data, not supported by this
             * implementation.
             */
            if (predictor_data_present != FALSE)
            {
                status = 1; /* ERROR CODE UPDATE LATER */
            } /* if (predictor_data_present != FALSE) */

        } /* end of "else" clause of if (audioObjectType == MP4AUDIO_LTP) */

    } /*  if (windowSequence == EIGHT_SHORT_SEQUENCE) [FALSE branch] */


    /*
     * Save all local copies.
     */
    pFirstLTPStatus->ltp_data_present = first_ltp_data_present;
    if (common_window != FALSE)
    {
        pSecondLTPStatus->ltp_data_present = second_ltp_data_present;
    }

    *p_max_sfb = local_max_sfb;

    *pWindowSequence = windowSequence;

    return (status);

}  /* get_ics_info */
Beispiel #8
0
void
write_out_tar_header (struct cpio_file_stat *file_hdr, int out_des)
{
  int name_len;
  union tar_record tar_rec;
  struct tar_header *tar_hdr = (struct tar_header *) &tar_rec;

  memset (&tar_rec, 0, sizeof tar_rec);

  /* process_copy_out must ensure that file_hdr->c_name is short enough,
     or we will lose here.  */

  name_len = strlen (file_hdr->c_name);
  if (name_len <= TARNAMESIZE)
    {
      strncpy (tar_hdr->name, file_hdr->c_name, name_len);
    }
  else
    {
      /* Fit as much as we can into `name', the rest into `prefix'.  */
      int prefix_len = split_long_name (file_hdr->c_name, name_len);

      strncpy (tar_hdr->prefix, file_hdr->c_name, prefix_len);
      strncpy (tar_hdr->name, file_hdr->c_name + prefix_len + 1,
	       name_len - prefix_len - 1);
    }

  /* Ustar standard (POSIX.1-1988) requires the mode to contain only 3 octal
     digits */
  to_oct (file_hdr->c_mode & MODE_ALL, 8, tar_hdr->mode);
  to_oct (file_hdr->c_uid, 8, tar_hdr->uid);
  to_oct (file_hdr->c_gid, 8, tar_hdr->gid);
  to_oct (file_hdr->c_filesize, 12, tar_hdr->size);
  to_oct (file_hdr->c_mtime, 12, tar_hdr->mtime);

  switch (file_hdr->c_mode & CP_IFMT)
    {
    case CP_IFREG:
      if (file_hdr->c_tar_linkname)
	{
	  /* process_copy_out makes sure that c_tar_linkname is shorter
	     than TARLINKNAMESIZE.  */
	  strncpy (tar_hdr->linkname, file_hdr->c_tar_linkname,
		   TARLINKNAMESIZE);
	  tar_hdr->typeflag = LNKTYPE;
	  to_oct (0, 12, tar_hdr->size);
	}
      else
	tar_hdr->typeflag = REGTYPE;
      break;
    case CP_IFDIR:
      tar_hdr->typeflag = DIRTYPE;
      break;
    case CP_IFCHR:
      tar_hdr->typeflag = CHRTYPE;
      break;
    case CP_IFBLK:
      tar_hdr->typeflag = BLKTYPE;
      break;
#ifdef CP_IFIFO
    case CP_IFIFO:
      tar_hdr->typeflag = FIFOTYPE;
      break;
#endif /* CP_IFIFO */
#ifdef CP_IFLNK
    case CP_IFLNK:
      tar_hdr->typeflag = SYMTYPE;
      /* process_copy_out makes sure that c_tar_linkname is shorter
	 than TARLINKNAMESIZE.  */
      strncpy (tar_hdr->linkname, file_hdr->c_tar_linkname,
	       TARLINKNAMESIZE);
      to_oct (0, 12, tar_hdr->size);
      break;
#endif /* CP_IFLNK */
    }

  if (archive_format == arf_ustar)
    {
      char *name;

      strncpy (tar_hdr->magic, TMAGIC, TMAGLEN);
      strncpy (tar_hdr->version, TVERSION, TVERSLEN);

      name = getuser (file_hdr->c_uid);
      if (name)
	strcpy (tar_hdr->uname, name);
      name = getgroup (file_hdr->c_gid);
      if (name)
	strcpy (tar_hdr->gname, name);

      to_oct (file_hdr->c_rdev_maj, 8, tar_hdr->devmajor);
      to_oct (file_hdr->c_rdev_min, 8, tar_hdr->devminor);
    }

  to_oct (tar_checksum (tar_hdr), 8, tar_hdr->chksum);

  tape_buffered_write ((char *) &tar_rec, out_des, TARRECORDSIZE);
}
Beispiel #9
0
/* -------------------------------------------------------------------- */
void Readlog(BOOL revOrder)
{
    int i, grpslot;
    char dtstr[80];
    char flags[11];
    char wild=FALSE;
    char buser=FALSE;
    char step;

    grpslot = ERROR;

    if (mf.mfUser[0])
    {
        getNormStr("user", mf.mfUser, NAMESIZE, ECHO);                     

        stripansi(mf.mfUser);
                                                                           
        if (personexists(mf.mfUser) == ERROR)                              
        {                                                                  
            if(   strpos('?',mf.mfUser)                                       
               || strpos('*',mf.mfUser)                                       
               || strpos('[',mf.mfUser))                                      
            {                                                                 
                wild = TRUE;                                                  
            }                                                                 
            else                                                              
            {                                                                 
                mPrintf(" \nNo such user!\n ");                               
                return;                                                       
            }                                                                 
        }                                                                  
        else                                                               
        {                                                                  
            buser = TRUE;                                                    
        }                                                                  
    }

    outFlag = OUTOK;
    setio(whichIO, echo, outFlag);


    if (mf.mfLim && (cfg.readluser || sysop || aide))
    {
        doCR();
        getgroup();
        if (!mf.mfLim)
            return;
        grpslot = groupexists(mf.mfGroup);
    }
    else
    {
        mf.mfLim = FALSE;
    }

    outFlag = OUTOK;
    setio(whichIO, echo, outFlag);

    if (!expert) mPrintf(" \n \n <3J0>ump <3N0>ext <3P0>ause <3S0>top");

    if (!revOrder)
    {
        step = 1;
        i = 0;
    }
    else
    {
        step = -1;
        i = cfg.MAXLOGTAB - 1;
    }
    
    for ( ; 
          ( (i < cfg.MAXLOGTAB) && (outFlag != OUTSKIP) && (i >= 0) ); 
          i += step)
    {
        if(mAbort(FALSE))
            return;

        if (logTab[i].ltpwhash != 0 &&
            logTab[i].ltnmhash != 0)
        {
            if (buser && (int)hash(mf.mfUser) != logTab[i].ltnmhash)
                continue;

            getLog(&lBuf,logTab[i].ltlogSlot);

            if (buser && strcmpi(mf.mfUser, lBuf.lbname) != SAMESTRING)
                continue;

            if(wild && !u_match(deansi(lBuf.lbname), mf.mfUser))
                continue;

            if (mf.mfLim
              && (lBuf.groups[grpslot] != grpBuf.group[grpslot].groupgen)
              &&
          (strcmpi(lBuf.lbname, cfg.sysop) != SAMESTRING  )
)
              continue;
       
            /* Show yourself even if unlisted */
            if ( (!i && loggedIn) || 
                 (lBuf.lbflags.L_INUSE
                  && (aide || !lBuf.lbflags.UNLISTED) )  )
            {


                if (verbose)
                {
                    strftime(dtstr, 79, (loggedIn) ? logBuf.vdstamp : cfg.vdatestamp, lBuf.calltime);

                    if ((cfg.surnames || cfg.titles) && /* verbose >= 2 */
                         logBuf.DISPLAYTS)
                    {
                        doCR();
                        doCR();
                        if (*lBuf.title)   mPrintf(" [%s]", lBuf.title);
                                           mPrintf(" 3%s0",   lBuf.lbname);
                        if (*lBuf.surname) mPrintf(" [%s]", lBuf.surname);
                        doCR();
                        mPrintf(" #%lu %s",  lBuf.callno, dtstr);
                    }
                    else
                    {
                        doCR();
                        mPrintf(" 3%-20s0 #%lu %s", lBuf.lbname, lBuf.callno, dtstr);
                    }
                }
                else
                {
                    doCR();
#if 1
                    if (aide || lBuf.lbflags.NODE)
#endif
                    mPrintf(" %-20s",lBuf.lbname);
#if 1
                    else
                        mPrintf(" %s", lBuf.lbname);
#endif
                }

                if (aide )    /*   A>ide T>wit P>erm U>nlist N>etuser S>ysop */
                {
                    if (cfg.accounting && verbose)
                    {
                        if (lBuf.lbflags.NOACCOUNT)
                             mPrintf( " %10s", "N/A");
                        else mPrintf( " %10.2f", lBuf.credits);
                    }
    
                    strcpy(flags, "         ");

                    if ( lBuf.lbflags.AIDE)      flags[0] = 'A';
                    if ( lBuf.lbflags.PROBLEM)   flags[1] = 'T';
                    if ( lBuf.lbflags.PERMANENT) flags[2] = 'P';
                    if ( lBuf.lbflags.NETUSER)   flags[3] = 'N';
                    if ( lBuf.lbflags.UNLISTED)  flags[4] = 'U';
                    if ( lBuf.lbflags.SYSOP)     flags[5] = 'S';
                    if ( lBuf.lbflags.NOMAIL)    flags[6] = 'M';
                    if ( lBuf.VERIFIED)          flags[7] = 'V';
                    if ( lBuf.DUNGEONED)         flags[8] = 'D';
                    if ( lBuf.MSGAIDE)           flags[9] = 'm';
    
                    mPrintf(" %s",flags);
                }

                if (lBuf.lbflags.NODE)
                {
                    mPrintf(" (Node) ");
                }
            }

            


#ifdef GOODBYE
                if (verbose)
                {
                    strftime(dtstr, 79, (loggedIn) ? logBuf.dstamp : cfg.datestamp, lBuf.calltime);

                    if ((cfg.surnames || cfg.titles) && logBuf.DISPLAYTS)
                    {
                        doCR();
                        mPrintf(" [%s] 3%s0 [%s]", 
                                  lBuf.title, lBuf.lbname, lBuf.surname);
                        doCR();
                        mPrintf(" #%lu %s",  lBuf.callno, dtstr);
                    }
                    else
                    {
                        doCR();
                        mPrintf(" 3%-20s0 #%lu %s", lBuf.lbname, lBuf.callno, dtstr);
                    }
                }
                else
                {
                    doCR();
                    mPrintf(" %-20s",lBuf.lbname);
                }

                if (aide )    /*   A>ide T>wit P>erm U>nlist N>etuser S>ysop */
                {
                    if (cfg.accounting && verbose)
                    {
                        if (lBuf.lbflags.NOACCOUNT)
                             mPrintf( " %10s", "N/A");
                        else mPrintf( " %10.2f", lBuf.credits);
                    }
    
                    strcpy(flags, "         ");

                    if ( lBuf.lbflags.AIDE)      flags[0] = 'A';
                    if ( lBuf.lbflags.PROBLEM)   flags[1] = 'T';
                    if ( lBuf.lbflags.PERMANENT) flags[2] = 'P';
                    if ( lBuf.lbflags.NETUSER)   flags[3] = 'N';
                    if ( lBuf.lbflags.UNLISTED)  flags[4] = 'U';
                    if ( lBuf.lbflags.SYSOP)     flags[5] = 'S';
                    if ( lBuf.lbflags.NOMAIL)    flags[6] = 'M';
                    if ( lBuf.VERIFIED)          flags[7] = 'V';
                    if ( lBuf.DUNGEONED)         flags[8] = 'D';
                    if ( lBuf.MSGAIDE)           flags[9] = 'm';
    
                    mPrintf(" %s",flags);
                }

                if (lBuf.lbflags.NODE)
                {
                    mPrintf(" (Node) ");
                }

                if (verbose) doCR();
            }

#endif

        }
    }