/* have already gotten delimiter in qs[0] */ void POL::getquote (char *qs, int toksiz) { int delim; delim = inchar(); /* char = delimiter */ getescape(qs, delim, toksiz); }
static int huffspec(faacDecHandle hDecoder, Info *info, int nsect, byte *sect, int *factors, Float *coef) { Hcb *hcb; Huffman *hcw; int i, j, k, table, step, stop, bottom, top; int *bands, *bandp; int *quant, *qp; int *tmp_spec; int *quantPtr; int *tmp_specPtr; quant = AllocMemory(LN2*sizeof(int)); tmp_spec = AllocMemory(LN2*sizeof(int)); quantPtr = quant; tmp_specPtr = tmp_spec; #ifndef _WIN32 SetMemory(quant, 0, LN2*sizeof(int)); #endif bands = info->bk_sfb_top; bottom = 0; k = 0; bandp = bands; for(i = nsect; i; i--) { table = sect[0]; top = sect[1]; sect += 2; if( (table == 0) || (table == NOISE_HCB) || (table == INTENSITY_HCB) || (table == INTENSITY_HCB2) ) { bandp = bands+top; k = bandp[-1]; bottom = top; continue; } if(table < BY4BOOKS+1) { step = 4; } else { step = 2; } hcb = &book[table]; hcw = hcb->hcw; qp = quant+k; for(j = bottom; j < top; j++) { stop = *bandp++; while(k < stop) { decode_huff_cw(hDecoder, hcw, qp, hcb); if (!hcb->signed_cb) get_sign_bits(hDecoder, qp, step); if(table == ESCBOOK){ qp[0] = getescape(hDecoder, qp[0]); qp[1] = getescape(hDecoder, qp[1]); } qp += step; k += step; } } bottom = top; } /* pulse coding reconstruction */ if ((info->islong) && (hDecoder->pulse_info.pulse_data_present)) pulse_nc(hDecoder, quant, &hDecoder->pulse_info); if (!info->islong) { deinterleave (quant,tmp_spec, (short)info->num_groups, info->group_len, info->sfb_per_sbk, info->sfb_width_128); for (i = LN2/16 - 1; i >= 0; --i) { *quantPtr++ = *tmp_specPtr++; *quantPtr++ = *tmp_specPtr++; *quantPtr++ = *tmp_specPtr++; *quantPtr++ = *tmp_specPtr++; *quantPtr++ = *tmp_specPtr++; *quantPtr++ = *tmp_specPtr++; *quantPtr++ = *tmp_specPtr++; *quantPtr++ = *tmp_specPtr++; *quantPtr++ = *tmp_specPtr++; *quantPtr++ = *tmp_specPtr++; *quantPtr++ = *tmp_specPtr++; *quantPtr++ = *tmp_specPtr++; *quantPtr++ = *tmp_specPtr++; *quantPtr++ = *tmp_specPtr++; *quantPtr++ = *tmp_specPtr++; *quantPtr++ = *tmp_specPtr++; } } /* inverse quantization */ for (i=0; i<info->bins_per_bk; i++) { coef[i] = esc_iquant(hDecoder, quant[i]); } /* rescaling */ { int sbk, nsbk, sfb, nsfb, fac, top; Float *fp, scale; i = 0; fp = coef; nsbk = info->nsbk; for (sbk=0; sbk<nsbk; sbk++) { nsfb = info->sfb_per_sbk[sbk]; k=0; for (sfb=0; sfb<nsfb; sfb++) { top = info->sbk_sfb_top[sbk][sfb]; fac = factors[i++]-SF_OFFSET; if (fac >= 0 && fac < TEXP) { scale = hDecoder->exptable[fac]; } else { if (fac == -SF_OFFSET) { scale = 0; } else { scale = (float)pow(2.0, 0.25*fac); } } for ( ; k<top; k++) { *fp++ *= scale; } } } } if (quant) FreeMemory(quant); if (tmp_spec) FreeMemory(tmp_spec); return 1; }
int main(int argc, char *argv[]) { struct passwd *pw; struct servent *sp; struct termios tty; long omask; int argoff, ch, dflag, Dflag, one; uid_t uid; char *host, *localname, *p, *user, term[1024]; speed_t ospeed; struct sockaddr_storage ss; socklen_t sslen; size_t len, len2; int i; argoff = dflag = Dflag = 0; one = 1; host = localname = user = NULL; if ((p = strrchr(argv[0], '/'))) ++p; else p = argv[0]; if (strcmp(p, "rlogin")) host = p; /* handle "rlogin host flags" */ if (!host && argc > 2 && argv[1][0] != '-') { host = argv[1]; argoff = 1; } #define OPTIONS "468DEde:i:l:" while ((ch = getopt(argc - argoff, argv + argoff, OPTIONS)) != -1) switch(ch) { case '4': family = PF_INET; break; case '6': family = PF_INET6; break; case '8': eight = 1; break; case 'D': Dflag = 1; break; case 'E': noescape = 1; break; case 'd': dflag = 1; break; case 'e': noescape = 0; escapechar = getescape(optarg); break; case 'i': if (getuid() != 0) errx(1, "-i user: permission denied"); localname = optarg; break; case 'l': user = optarg; break; case '?': default: usage(); } optind += argoff; /* if haven't gotten a host yet, do so */ if (!host && !(host = argv[optind++])) usage(); if (argv[optind]) usage(); if (!(pw = getpwuid(uid = getuid()))) errx(1, "unknown user id"); if (!user) user = pw->pw_name; if (!localname) localname = pw->pw_name; sp = NULL; sp = getservbyname("login", "tcp"); if (sp == NULL) errx(1, "login/tcp: unknown service"); if ((p = getenv("TERM")) != NULL) (void)strlcpy(term, p, sizeof(term)); len = strlen(term); if (len < (sizeof(term) - 1) && tcgetattr(0, &tty) == 0) { /* start at 2 to include the / */ for (ospeed = i = cfgetospeed(&tty), len2 = 2; i > 9; len2++) i /= 10; if (len + len2 < sizeof(term)) (void)snprintf(term + len, len2 + 1, "/%d", ospeed); } (void)get_window_size(0, &winsize); (void)signal(SIGPIPE, lostpeer); /* will use SIGUSR1 for window size hack, so hold it off */ omask = sigblock(sigmask(SIGURG) | sigmask(SIGUSR1)); /* * We set SIGURG and SIGUSR1 below so that an * incoming signal will be held pending rather than being * discarded. Note that these routines will be ready to get * a signal by the time that they are unblocked below. */ (void)signal(SIGURG, copytochild); (void)signal(SIGUSR1, writeroob); rem = rcmd_af(&host, sp->s_port, localname, user, term, 0, family); if (rem < 0) exit(1); if (dflag && setsockopt(rem, SOL_SOCKET, SO_DEBUG, &one, sizeof(one)) < 0) warn("setsockopt"); if (Dflag && setsockopt(rem, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(one)) < 0) warn("setsockopt NODELAY (ignored)"); sslen = sizeof(ss); one = IPTOS_LOWDELAY; if (getsockname(rem, (struct sockaddr *)&ss, &sslen) == 0 && ss.ss_family == AF_INET) { if (setsockopt(rem, IPPROTO_IP, IP_TOS, (char *)&one, sizeof(int)) < 0) warn("setsockopt TOS (ignored)"); } else if (ss.ss_family == AF_INET) warn("setsockopt getsockname failed"); (void)setuid(uid); doit(omask); /*NOTREACHED*/ }
monitor() { register char chr; int timevec[2]; register int controlno; while (chr = getch()) { if (chr == '\\') { /* process control sequence */ if ((controlno = getescape(1)) == 0) continue; switch (controlno) { case C_EDIT: edit(); continue; case C_PRINT: print(); continue; case C_LIST: eval(1); continue; case C_EVAL: eval(0); Autoclear = TRUE; continue; case C_INCLUDE: include(0); cgprompt(); continue; case C_WRITE: writeout(); cgprompt(); continue; case C_CHDIR: newdirec(); cgprompt(); continue; case C_RESET: clear(1); continue; case C_GO: go(); continue; case C_QUIT: clrline(1); quit(); case C_SHELL: shell(); continue; case C_TIME: time(timevec); printf("%s", ctime(timevec)); clrline(0); continue; case C_APPEND: Autoclear = 0; clrline(0); continue; case C_MARK: getfilename(); prompt(0); continue; case C_BRANCH: branch(); prompt(0); continue; default: syserr("monitor: bad code %d", controlno); } } putch(chr); } if (Input == stdin) { if (Nodayfile >= 0) printf("\n"); } else fclose(Input); }
int POL::getpol_tok (struct token_st *token) { KeywordCodeEntry* sym; token->ready = false; nexttok: gettok (token); if (token->type == TT_BLANK) goto nexttok; if (token->type == TT_SPECLCHAR) { if (strchr(m_szSkipChars, token->tokstr[0]) != NULL) goto nexttok; if (token->tokstr[0] == NEWLINE) goto nexttok; if (token->tokstr[0] == meta.cmd) { getcmd(); goto nexttok; } if (token->tokstr[0] == meta.com) { /* skip comment */ eatline (); goto nexttok; } if (token->tokstr[0] == meta.out) { getescape(token->tokstr, meta.out, MAXTOK); fputs (token->tokstr, stderr); goto nexttok; } if (token->tokstr[0] == meta.con) { /* continuation across NEWLINE */ while (lookchar() == BLANK || lookchar() == TAB) inchar(); if (lookchar() == NEWLINE) inchar(); } if (token->tokstr[0] == meta.ter) { /* get input from terminal */ usefile (P_USE_FILE, ""); tok (token); closefile(); return (token->type); } } /* look for filler words */ if (skiptable.lookup (token->tokstr) != NULL) /* ignore words in skip table */ goto nexttok; /* look for user defined symbols */ if ((sym = usertable.lookup (token->tokstr)) != NULL) { token->type = TT_USERTOK; token->code = sym->getCode(); } else token->code = 0; if (m_bTrace) sys_error (ERR_TRACE, "POL read token '%s', type = %d\n", token->tokstr, token->type); return (token->type); }
int main(int argc, char *argv[]) { struct passwd *pw; struct servent *sp; struct sgttyb ttyb; long omask; int argoff, ch, dflag, Dflag, one, uid; char *host, *localname, *p, *user, term[1024]; #ifdef KERBEROS char *k; #endif struct sockaddr_storage ss; int sslen; argoff = dflag = Dflag = 0; one = 1; host = localname = user = NULL; if ((p = strrchr(argv[0], '/'))) ++p; else p = argv[0]; if (strcmp(p, "rlogin")) host = p; /* handle "rlogin host flags" */ if (!host && argc > 2 && argv[1][0] != '-') { host = argv[1]; argoff = 1; } #ifdef KERBEROS #define OPTIONS "468DEKLde:i:k:l:x" #else #define OPTIONS "468DEKLde:i:l:" #endif while ((ch = getopt(argc - argoff, argv + argoff, OPTIONS)) != -1) switch(ch) { case '4': family = PF_INET; break; case '6': family = PF_INET6; break; case '8': eight = 1; break; case 'D': Dflag = 1; break; case 'E': noescape = 1; break; case 'K': #ifdef KERBEROS use_kerberos = 0; #endif break; case 'L': litout = 1; break; case 'd': dflag = 1; break; case 'e': noescape = 0; escapechar = getescape(optarg); break; case 'i': if (getuid() != 0) errx(1, "-i user: permission denied"); localname = optarg; break; #ifdef KERBEROS case 'k': dest_realm = dst_realm_buf; (void)strncpy(dest_realm, optarg, REALM_SZ); break; #endif case 'l': user = optarg; break; #ifdef CRYPT #ifdef KERBEROS case 'x': doencrypt = 1; break; #endif #endif case '?': default: usage(); } optind += argoff; /* if haven't gotten a host yet, do so */ if (!host && !(host = argv[optind++])) usage(); if (argv[optind]) usage(); if (!(pw = getpwuid(uid = getuid()))) errx(1, "unknown user id"); if (!user) user = pw->pw_name; if (!localname) localname = pw->pw_name; sp = NULL; #ifdef KERBEROS k = auth_getval("auth_list"); if (k && !strstr(k, "kerberos")) use_kerberos = 0; if (use_kerberos) { sp = getservbyname((doencrypt ? "eklogin" : "klogin"), "tcp"); if (sp == NULL) { use_kerberos = 0; warn("can't get entry for %s/tcp service", doencrypt ? "eklogin" : "klogin"); } } #endif if (sp == NULL) sp = getservbyname("login", "tcp"); if (sp == NULL) errx(1, "login/tcp: unknown service"); #define MAX_TERM_LENGTH (sizeof(term) - 1 - MAX_SPEED_LENGTH - 1) (void)strncpy(term, (p = getenv("TERM")) ? p : "network", MAX_TERM_LENGTH); term[MAX_TERM_LENGTH] = '\0'; if (ioctl(0, TIOCGETP, &ttyb) == 0) { (void)strcat(term, "/"); (void)strcat(term, speeds[(int)ttyb.sg_ospeed]); } (void)get_window_size(0, &winsize); (void)signal(SIGPIPE, lostpeer); /* will use SIGUSR1 for window size hack, so hold it off */ omask = sigblock(sigmask(SIGURG) | sigmask(SIGUSR1)); /* * We set SIGURG and SIGUSR1 below so that an * incoming signal will be held pending rather than being * discarded. Note that these routines will be ready to get * a signal by the time that they are unblocked below. */ (void)signal(SIGURG, copytochild); (void)signal(SIGUSR1, writeroob); #ifdef KERBEROS if (use_kerberos) { setuid(getuid()); rem = KSUCCESS; errno = 0; if (dest_realm == NULL) dest_realm = krb_realmofhost(host); #ifdef CRYPT if (doencrypt) { rem = krcmd_mutual(&host, sp->s_port, user, term, 0, dest_realm, &cred, schedule); des_set_key(&cred.session, schedule); } else #endif /* CRYPT */ rem = krcmd(&host, sp->s_port, user, term, 0, dest_realm); if (rem < 0) { int i; char **newargv; sp = getservbyname("login", "tcp"); if (sp == NULL) errx(1, "unknown service login/tcp"); if (errno == ECONNREFUSED) warn("remote host doesn't support Kerberos"); if (errno == ENOENT) warn("can't provide Kerberos auth data"); newargv = malloc((argc + 2) * sizeof(*newargv)); if (newargv == NULL) err(1, "malloc"); newargv[0] = argv[0]; newargv[1] = "-K"; for(i = 1; i < argc; ++i) newargv[i + 1] = argv[i]; newargv[argc + 1] = NULL; execv(_PATH_RLOGIN, newargv); } } else { #ifdef CRYPT if (doencrypt) errx(1, "the -x flag requires Kerberos authentication"); #endif /* CRYPT */ rem = rcmd_af(&host, sp->s_port, localname, user, term, 0, family); } #else rem = rcmd_af(&host, sp->s_port, localname, user, term, 0, family); #endif /* KERBEROS */ if (rem < 0) exit(1); if (dflag && setsockopt(rem, SOL_SOCKET, SO_DEBUG, &one, sizeof(one)) < 0) warn("setsockopt"); if (Dflag && setsockopt(rem, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(one)) < 0) warn("setsockopt NODELAY (ignored)"); sslen = sizeof(ss); one = IPTOS_LOWDELAY; if (getsockname(rem, (struct sockaddr *)&ss, &sslen) == 0 && ss.ss_family == AF_INET) { if (setsockopt(rem, IPPROTO_IP, IP_TOS, (char *)&one, sizeof(int)) < 0) warn("setsockopt TOS (ignored)"); } else if (ss.ss_family == AF_INET) warn("setsockopt getsockname failed"); (void)setuid(uid); doit(omask); /*NOTREACHED*/ }