char * lutil_getpass( const char *prompt ) { static char pbuf[PBUF]; FILE *fi; int c; unsigned i; #if defined(HAVE_TERMIOS_H) || defined(HAVE_SGTTY_H) TERMIO_TYPE ttyb; TERMFLAG_TYPE flags; RETSIGTYPE (*sig)( int sig ); #endif if( prompt == NULL ) prompt = _("Password: "******"->getpass(%s)\n", prompt); #endif #if defined(HAVE_TERMIOS_H) || defined(HAVE_SGTTY_H) if ((fi = fopen(TTY, "r")) == NULL) fi = stdin; else setbuf(fi, (char *)NULL); if (fi != stdin) { if (GETATTR(fileno(fi), &ttyb) < 0) perror("GETATTR"); sig = SIGNAL (SIGINT, SIG_IGN); flags = GETFLAGS( ttyb ); SETFLAGS( ttyb, flags & ~ECHO ); if (SETATTR(fileno(fi), &ttyb) < 0) perror("SETATTR"); } #else fi = stdin; #endif fprintf(stderr, "%s", prompt); fflush(stderr); i = 0; while ( (c = getc(fi)) != EOF && c != '\n' && c != '\r' ) if ( i < (sizeof(pbuf)-1) ) pbuf[i++] = c; #if defined(HAVE_TERMIOS_H) || defined(HAVE_SGTTY_H) /* tidy up */ if (fi != stdin) { fprintf(stderr, "\n"); fflush(stderr); SETFLAGS( ttyb, flags ); if (SETATTR(fileno(fi), &ttyb) < 0) perror("SETATTR"); (void) SIGNAL (SIGINT, sig); (void) fclose(fi); } #endif if ( c == EOF ) return( NULL ); pbuf[i] = '\0'; return (pbuf); }
struct mudlle_float *alloc_mudlle_float(float d) { struct mudlle_float *newp; newp = (struct mudlle_float *)allocate_string(type_float, sizeof newp->d); newp->d = d; SETFLAGS(newp, OBJ_READONLY | OBJ_IMMUTABLE); return newp; }
void S9xResetCPU () { Registers.PB = 0; Registers.PC = S9xGetWord (0xFFFC, &CPU); Registers.D.W = 0; Registers.DB = 0; Registers.SH = 1; Registers.SL = 0xFF; Registers.XH = 0; Registers.YH = 0; Registers.P.W = 0; ICPU.ShiftedPB = 0; ICPU.ShiftedDB = 0; SETFLAGS (MemoryFlag | IndexFlag | IRQ | Emulation); CLEARFLAGS (Decimal); CPU.Flags = CPU.Flags & (DEBUG_MODE_FLAG | TRACE_FLAG); CPU.BranchSkip = FALSE; CPU.NMIActive = FALSE; CPU.IRQActive = FALSE; CPU.WaitingForInterrupt = FALSE; CPU.InDMA = FALSE; CPU.WhichEvent = HBLANK_START_EVENT; CPU.PC = NULL; CPU.PCBase = NULL; CPU.PCAtOpcodeStart = NULL; CPU.WaitAddress = NULL; CPU.WaitCounter = 0; CPU.Cycles = 0; CPU.NextEvent = Settings.HBlankStart; CPU.V_Counter = 0; CPU.MemSpeed = SLOW_ONE_CYCLE; CPU.MemSpeedx2 = SLOW_ONE_CYCLE * 2; CPU.FastROMSpeed = SLOW_ONE_CYCLE; CPU.AutoSaveTimer = 0; CPU.SRAMModified = FALSE; // CPU.NMITriggerPoint = 4; // Set when ROM image loaded CPU.BRKTriggered = FALSE; //CPU.TriedInterleavedMode2 = FALSE; // Reset when ROM image loaded CPU.NMICycleCount = 0; CPU.IRQCycleCount = 0; S9xSetPCBase (Registers.PC, &CPU); #ifndef VAR_CYCLES ICPU.Speed = S9xE1M1X1; #endif ICPU.S9xOpcodes = S9xOpcodesM1X1; ICPU.CPUExecuting = TRUE; S9xUnpackStatus(); }
/* TtkCheckStateOption -- * Handle -state compatibility option. * * NOTE: setting -state disabled / -state enabled affects the * widget state, but the internal widget state does *not* affect * the value of the -state option. * This option is present for compatibility only. */ void TtkCheckStateOption(WidgetCore *corePtr, Tcl_Obj *objPtr) { int stateOption = TTK_COMPAT_STATE_NORMAL; unsigned all = TTK_STATE_DISABLED|TTK_STATE_READONLY|TTK_STATE_ACTIVE; # define SETFLAGS(f) TtkWidgetChangeState(corePtr, f, all^f) (void)Tcl_GetIndexFromObj(NULL,objPtr,ttkStateStrings,"",0,&stateOption); switch (stateOption) { case TTK_COMPAT_STATE_NORMAL: default: SETFLAGS(0); break; case TTK_COMPAT_STATE_READONLY: SETFLAGS(TTK_STATE_READONLY); break; case TTK_COMPAT_STATE_DISABLED: SETFLAGS(TTK_STATE_DISABLED); break; case TTK_COMPAT_STATE_ACTIVE: SETFLAGS(TTK_STATE_ACTIVE); break; } # undef SETFLAGS }
char * lutil_getpass( const char *prompt ) { #if !defined(HAVE_POSIX_TERMIOS) && !defined(HAVE_SGTTY_H) static char buf[256]; int i, c; if( prompt == NULL ) prompt = "Password: "******"->getpass(%s)\n", prompt); #endif printf("%s", prompt); i = 0; while ( (c = getch()) != EOF && c != '\n' && c != '\r' ) buf[i++] = c; if ( c == EOF ) return( NULL ); buf[i] = '\0'; return (buf); #else int no_pass = 0; char i, j, k; TERMIO_TYPE ttyb; TERMFLAG_TYPE flags; static char pbuf[513]; register char *p; register int c; FILE *fi; RETSIGTYPE (*sig)( int sig ); if( prompt == NULL ) prompt = "Password: "******"->getpass(%s)\n", prompt); #endif /* * Stolen from the getpass() routine. Can't use the plain * getpass() for two reasons. One is that LDAP passwords * can be really, really long - much longer than 8 chars. * The second is that we like to make this client available * out of inetd via a Merit asynch port, and we need to be * able to do telnet control codes to turn on and off line * blanking. */ if ((fi = fdopen(open("/dev/tty", 2), "r")) == NULL) fi = stdin; else setbuf(fi, (char *)NULL); sig = SIGNAL (SIGINT, SIG_IGN); if (fi != stdin) { if (GETATTR(fileno(fi), &ttyb) < 0) perror("GETATTR"); } flags = GETFLAGS( ttyb ); SETFLAGS( ttyb, flags & ~ECHO ); if (fi != stdin) { if (SETATTR(fileno(fi), &ttyb) < 0) perror("SETATTR"); } /* blank the line if through Merit */ if (fi == stdin) { printf("%c%c%c", 255, 251, 1); fflush(stdout); (void) scanf("%c%c%c", &i, &j, &k); fflush(stdin); } /* fetch the password */ fprintf(stdout, "%s", prompt); fflush(stdout); for (p=pbuf; (c = getc(fi))!='\n' && c!=EOF;) { if (c == '\r') break; if (p < &pbuf[512]) *p++ = c; } if (c == EOF) no_pass = 1; else { *p = '\0'; if (*(p - 1) == '\r') *(p - 1) = '\0'; } /* unblank the line if through Merit */ if (fi == stdin) { printf("%c%c%c", 255, 252, 1); fflush(stdout); (void) scanf("%c%c%c", &i, &j, &k); fflush(stdin); printf("\n"); fflush(stdout); } fprintf(stdout, "\n"); fflush(stdout); /* tidy up */ SETFLAGS( ttyb, flags ); if (fi != stdin) { if (SETATTR(fileno(fi), &ttyb) < 0) perror("SETATTR"); } (void) SIGNAL (SIGINT, sig); if (fi != stdin) (void) fclose(fi); else i = getchar(); if (no_pass) return(NULL); return(pbuf); #endif }
int compare(NODE *s, FTSENT *p) { u_int32_t len, val; #if HAVE_STRUCT_STAT_ST_FLAGS u_int32_t flags; #endif int fd, label; const char *cp, *tab; #if !defined(NO_MD5) || !defined(NO_RMD160) || !defined(NO_SHA1) || !defined(NO_SHA2) char *digestbuf; #endif tab = NULL; label = 0; switch(s->type) { case F_BLOCK: if (!S_ISBLK(p->fts_statp->st_mode)) goto typeerr; break; case F_CHAR: if (!S_ISCHR(p->fts_statp->st_mode)) goto typeerr; break; case F_DIR: if (!S_ISDIR(p->fts_statp->st_mode)) goto typeerr; break; case F_FIFO: if (!S_ISFIFO(p->fts_statp->st_mode)) goto typeerr; break; case F_FILE: if (!S_ISREG(p->fts_statp->st_mode)) goto typeerr; break; case F_LINK: if (!S_ISLNK(p->fts_statp->st_mode)) goto typeerr; break; #ifdef S_ISSOCK case F_SOCK: if (!S_ISSOCK(p->fts_statp->st_mode)) goto typeerr; break; #endif typeerr: LABEL; printf("\ttype (%s, %s)\n", nodetype(s->type), inotype(p->fts_statp->st_mode)); return (label); } if (mtree_Wflag) goto afterpermwhack; #if HAVE_STRUCT_STAT_ST_FLAGS if (iflag && !uflag) { if (s->flags & F_FLAGS) SETFLAGS(p->fts_statp->st_flags, SP_FLGS); return (label); } if (mflag && !uflag) { if (s->flags & F_FLAGS) CLEARFLAGS(p->fts_statp->st_flags, SP_FLGS); return (label); } #endif if (s->flags & F_DEV && (s->type == F_BLOCK || s->type == F_CHAR) && s->st_rdev != p->fts_statp->st_rdev) { LABEL; printf("%sdevice (%#llx, %#llx", tab, (long long)s->st_rdev, (long long)p->fts_statp->st_rdev); if (uflag) { if ((unlink(p->fts_accpath) == -1) || (mknod(p->fts_accpath, s->st_mode | nodetoino(s->type), s->st_rdev) == -1) || (lchown(p->fts_accpath, p->fts_statp->st_uid, p->fts_statp->st_gid) == -1) ) printf(", not modified: %s)\n", strerror(errno)); else printf(", modified)\n"); } else printf(")\n"); tab = "\t"; } /* Set the uid/gid first, then set the mode. */ if (s->flags & (F_UID | F_UNAME) && s->st_uid != p->fts_statp->st_uid) { LABEL; printf("%suser (%lu, %lu", tab, (u_long)s->st_uid, (u_long)p->fts_statp->st_uid); if (uflag) { if (lchown(p->fts_accpath, s->st_uid, -1)) printf(", not modified: %s)\n", strerror(errno)); else printf(", modified)\n"); } else printf(")\n"); tab = "\t"; } if (s->flags & (F_GID | F_GNAME) && s->st_gid != p->fts_statp->st_gid) { LABEL; printf("%sgid (%lu, %lu", tab, (u_long)s->st_gid, (u_long)p->fts_statp->st_gid); if (uflag) { if (lchown(p->fts_accpath, -1, s->st_gid)) printf(", not modified: %s)\n", strerror(errno)); else printf(", modified)\n"); } else printf(")\n"); tab = "\t"; } if (s->flags & F_MODE && s->st_mode != (p->fts_statp->st_mode & MBITS)) { if (lflag) { mode_t tmode, mode; tmode = s->st_mode; mode = p->fts_statp->st_mode & MBITS; /* * if none of the suid/sgid/etc bits are set, * then if the mode is a subset of the target, * skip. */ if (!((tmode & ~(S_IRWXU|S_IRWXG|S_IRWXO)) || (mode & ~(S_IRWXU|S_IRWXG|S_IRWXO)))) if ((mode | tmode) == tmode) goto skip; } LABEL; printf("%spermissions (%#lo, %#lo", tab, (u_long)s->st_mode, (u_long)p->fts_statp->st_mode & MBITS); if (uflag) { if (lchmod(p->fts_accpath, s->st_mode)) printf(", not modified: %s)\n", strerror(errno)); else printf(", modified)\n"); } else printf(")\n"); tab = "\t"; skip: ; } if (s->flags & F_NLINK && s->type != F_DIR && s->st_nlink != p->fts_statp->st_nlink) { LABEL; printf("%slink count (%lu, %lu)\n", tab, (u_long)s->st_nlink, (u_long)p->fts_statp->st_nlink); tab = "\t"; } if (s->flags & F_SIZE && s->st_size != p->fts_statp->st_size) { LABEL; printf("%ssize (%lld, %lld)\n", tab, (long long)s->st_size, (long long)p->fts_statp->st_size); tab = "\t"; } /* * XXX * Since utimes(2) only takes a timeval, there's no point in * comparing the low bits of the timespec nanosecond field. This * will only result in mismatches that we can never fix. * * Doesn't display microsecond differences. */ if (s->flags & F_TIME) { struct timeval tv[2]; struct stat *ps = p->fts_statp; time_t smtime = s->st_mtimespec.tv_sec; #if defined(BSD4_4) && !defined(HAVE_NBTOOL_CONFIG_H) time_t pmtime = ps->st_mtimespec.tv_sec; TIMESPEC_TO_TIMEVAL(&tv[0], &s->st_mtimespec); TIMESPEC_TO_TIMEVAL(&tv[1], &ps->st_mtimespec); #else time_t pmtime = (time_t)ps->st_mtime; tv[0].tv_sec = smtime; tv[0].tv_usec = 0; tv[1].tv_sec = pmtime; tv[1].tv_usec = 0; #endif if (tv[0].tv_sec != tv[1].tv_sec || tv[0].tv_usec != tv[1].tv_usec) { LABEL; printf("%smodification time (%.24s, ", tab, ctime(&smtime)); printf("%.24s", ctime(&pmtime)); if (tflag) { tv[1] = tv[0]; if (utimes(p->fts_accpath, tv)) printf(", not modified: %s)\n", strerror(errno)); else printf(", modified)\n"); } else printf(")\n"); tab = "\t"; } } #if HAVE_STRUCT_STAT_ST_FLAGS /* * XXX * since lchflags(2) will reset file times, the utimes() above * may have been useless! oh well, we'd rather have correct * flags, rather than times? */ if ((s->flags & F_FLAGS) && ((s->st_flags != p->fts_statp->st_flags) || mflag || iflag)) { if (s->st_flags != p->fts_statp->st_flags) { char *f_s; LABEL; f_s = flags_to_string(s->st_flags, "none"); printf("%sflags (\"%s\" is not ", tab, f_s); free(f_s); f_s = flags_to_string(p->fts_statp->st_flags, "none"); printf("\"%s\"", f_s); free(f_s); } if (uflag) { if (iflag) SETFLAGS(0, CH_MASK); else if (mflag) CLEARFLAGS(0, SP_FLGS); else SETFLAGS(0, (~SP_FLGS & CH_MASK)); } else printf(")\n"); tab = "\t"; } #endif /* HAVE_STRUCT_STAT_ST_FLAGS */ /* * from this point, no more permission checking or whacking * occurs, only checking of stuff like checksums and symlinks. */ afterpermwhack: if (s->flags & F_CKSUM) { if ((fd = open(p->fts_accpath, O_RDONLY, 0)) < 0) { LABEL; printf("%scksum: %s: %s\n", tab, p->fts_accpath, strerror(errno)); tab = "\t"; } else if (crc(fd, &val, &len)) { close(fd); LABEL; printf("%scksum: %s: %s\n", tab, p->fts_accpath, strerror(errno)); tab = "\t"; } else { close(fd); if (s->cksum != val) { LABEL; printf("%scksum (%lu, %lu)\n", tab, s->cksum, (unsigned long)val); } tab = "\t"; } } #ifndef NO_MD5 if (s->flags & F_MD5) { if ((digestbuf = MD5File(p->fts_accpath, NULL)) == NULL) { LABEL; printf("%s%s: %s: %s\n", tab, MD5KEY, p->fts_accpath, strerror(errno)); tab = "\t"; } else { if (strcmp(s->md5digest, digestbuf)) { LABEL; printf("%s%s (0x%s, 0x%s)\n", tab, MD5KEY, s->md5digest, digestbuf); } tab = "\t"; free(digestbuf); } } #endif /* ! NO_MD5 */ #ifndef NO_RMD160 if (s->flags & F_RMD160) { if ((digestbuf = RMD160File(p->fts_accpath, NULL)) == NULL) { LABEL; printf("%s%s: %s: %s\n", tab, RMD160KEY, p->fts_accpath, strerror(errno)); tab = "\t"; } else { if (strcmp(s->rmd160digest, digestbuf)) { LABEL; printf("%s%s (0x%s, 0x%s)\n", tab, RMD160KEY, s->rmd160digest, digestbuf); } tab = "\t"; free(digestbuf); } } #endif /* ! NO_RMD160 */ #ifndef NO_SHA1 if (s->flags & F_SHA1) { if ((digestbuf = SHA1File(p->fts_accpath, NULL)) == NULL) { LABEL; printf("%s%s: %s: %s\n", tab, SHA1KEY, p->fts_accpath, strerror(errno)); tab = "\t"; } else { if (strcmp(s->sha1digest, digestbuf)) { LABEL; printf("%s%s (0x%s, 0x%s)\n", tab, SHA1KEY, s->sha1digest, digestbuf); } tab = "\t"; free(digestbuf); } } #endif /* ! NO_SHA1 */ #ifndef NO_SHA2 if (s->flags & F_SHA256) { if ((digestbuf = SHA256_File(p->fts_accpath, NULL)) == NULL) { LABEL; printf("%s%s: %s: %s\n", tab, SHA256KEY, p->fts_accpath, strerror(errno)); tab = "\t"; } else { if (strcmp(s->sha256digest, digestbuf)) { LABEL; printf("%s%s (0x%s, 0x%s)\n", tab, SHA256KEY, s->sha256digest, digestbuf); } tab = "\t"; free(digestbuf); } } #ifdef SHA384_BLOCK_LENGTH if (s->flags & F_SHA384) { if ((digestbuf = SHA384_File(p->fts_accpath, NULL)) == NULL) { LABEL; printf("%s%s: %s: %s\n", tab, SHA384KEY, p->fts_accpath, strerror(errno)); tab = "\t"; } else { if (strcmp(s->sha384digest, digestbuf)) { LABEL; printf("%s%s (0x%s, 0x%s)\n", tab, SHA384KEY, s->sha384digest, digestbuf); } tab = "\t"; free(digestbuf); } } #endif if (s->flags & F_SHA512) { if ((digestbuf = SHA512_File(p->fts_accpath, NULL)) == NULL) { LABEL; printf("%s%s: %s: %s\n", tab, SHA512KEY, p->fts_accpath, strerror(errno)); tab = "\t"; } else { if (strcmp(s->sha512digest, digestbuf)) { LABEL; printf("%s%s (0x%s, 0x%s)\n", tab, SHA512KEY, s->sha512digest, digestbuf); } tab = "\t"; free(digestbuf); } } #endif /* ! NO_SHA2 */ if (s->flags & F_SLINK && strcmp(cp = rlink(p->fts_accpath), s->slink)) { LABEL; printf("%slink ref (%s, %s", tab, cp, s->slink); if (uflag) { if ((unlink(p->fts_accpath) == -1) || (symlink(s->slink, p->fts_accpath) == -1) ) printf(", not modified: %s)\n", strerror(errno)); else printf(", modified)\n"); } else printf(")\n"); } return (label); }