void AplusPopup::virtualScreen(A screen_) { if (server()->isCDERunning()==MSTrue) { if (!QA(screen_) || screen_->t!=It) { return; } int n=(int)screen_->n; unsigned long wsCount=server()->numberOfWorkspaces(); if (n>0 && wsCount>0) { Atom *wsAtoms=((AplusDisplayServer *)server())->workspaceAtoms(); if (wsAtoms==0) { return; } Atom *atoms=new Atom[n]; int wsNum; for (unsigned int i=0; i<n; ++i) { wsNum = (int)screen_->p[i]-1; // workspace numbers are 1-based if (wsNum<wsCount) // if it's a valid workspace number { atoms[i] = wsAtoms[wsNum]; } else // the workspace number is invalid { atoms[i] = 0; } } Atom property=XInternAtom(display(),_XA_VUE_WORKSPACE_HINTS,False); XChangeProperty(display(),window(), property,property,32, PropModeReplace, (unsigned char *)atoms, n); XFlush (display()); delete [] atoms; delete [] wsAtoms; // wsAtoms were allocated by server()->workspaceAtoms() method } } else // CDE is not running { if (QA(screen_) && screen_->t==It) { Atom atom = XInternAtom(display(), "WM_VIRTUAL_SCREEN", False); XChangeProperty(display(),window(),atom,XA_INTEGER,32,PropModeReplace, (unsigned char *)screen_->p,1); } } }
MSBoolean AplusFuncLabel::verify(A a_) { MSBoolean ticks, r=MSFalse; int i,j; if (a_!=0&&a_->n!=0&&QA(a_)&&(a_->t==Ft||a_->t==It||a_->t==Et)) { P p; p.i=a_->p; if (a_->t==Et&&QA(p.a[0])&&(p.a[0]->t==Ft||p.a[0]->t==It)) { r=MSTrue; value(p.a[0]); for (i=1; i<a_->n; i++) { if (isNull(p.a[i])==MSFalse) { switch(p.a[i]->t) { case Ct: case Et: label((A)p.a[i]); break; case Ft: ticks=MSFalse; P pt; pt.i=p.a[i]->p; for (j=0; j<p.a[i]->n; j++) { if (pt.f[j]<1) ticks=MSTrue; } if (ticks==MSTrue) tick((A)p.a[i]); else grid((A)p.a[i]); break; case It: grid((A)p.a[i]); break; default: break; } } } } else if (a_->t==Ft||a_->t==It) { value(a_); r=MSTrue; } } return r; }
Z I dr(A a,I f) { XA; A z,*ap=(A*)a->p,w; if(!an||at!=Et||fsy(a))R ic(a); /* ic_or_copy(a) */ w=*ap; Q(QF(w),9); if(!ar)R ic(w); /* ic_or_copy(w) */ { XW; I i=an,n=0,t; C *p; if(f){Q(ar>1,7)V0 n=*wd;} else{Q(ar+wr>MAXR,13)mv(ad+ar,wd,wr);} for(;--i;) { Q(!QA(a=ap[i])||(t=a->t)>Et,9); if(wt!=t&&a->n) if(f&&!n)wt=t; else{Q(wt>Ft||t>Ft,6)wt=Ft;} if(wr!=a->r){Q(!f||wr>1||a->r,7)*a->d=1;} Q(cm(wd+f,a->d+f,wr-f),11); if(f)n+=*a->d; } W(ga(wt,f?wr:ar+wr,f?n*tr(wr-1,wd+1):an*wn,f?wd:ad)); if(f)*z->d=n; p=(C*)z->p; DO(an,a=ap[i]; p=(*(a->t==wt?(C *(*)(I,F *,I *,I))tmv:i2f))(wt,(F *)p,a->p,a->n)); R(I)z; } }
A showLastSavedKstack() { if(recurseKstack==1) { H("\343 Internal Error _doErrorStack\n"); return aplus_nl; } if( lastSavedKstack && QA(lastSavedKstack) ) return (A)ic(lastSavedKstack); else return aplus_nl; }
void snapshotKstack() { extern A sikAsAObj() ; /* Consider changing signal handlers for segv and bus */ if(recurseKstack==0) { recurseKstack=1; if( lastSavedKstack && QA(lastSavedKstack) ) { dc(lastSavedKstack); lastSavedKstack=0; } lastSavedKstack=(A)sikAsAObj(); recurseKstack=0; } }
char * _mab_cover(unsigned long w) { unsigned long z,i; char *p=_mab(w); if(p) { int rc; unsigned long ww=w+2*sizeof(long *); #if defined(linux) if(initMutex) initMutex=_initMutex(); #endif /* Test for 8bit alignment */ if(!QA(p) ) printf("!! pointer not 8bit aligned 0x%x\n",p); if(memTrack && ww>=memTrackThreshold) printf("0x%x malloc %lu bytes\n",p,ww); for (z = ww >> 1, i = 1; z != 0; z >>= 1, i++); if( i >= MD ) i=MD-1; if(0!=(rc=pthread_mutex_lock(&memStats_lock))) { perror("si() pthread_mutex_lock"); } totalObjs[i]++; totalSize[i] += ww; if(totalObjs[i]>totalObjsMax[i]) totalObjsMax[i]=totalObjs[i]; if(totalSize[i]>totalSizeMax[i]) totalSizeMax[i]=totalSize[i]; if(rc==0 && pthread_mutex_unlock(&memStats_lock)) { perror("si() pthread_mutex_unlock"); } } return p; }
Z void rake_2p(A a,A z){if(QF(a)||Et!=a->t||fsy(a)&&a->n) {z->p[z->n++]=QA(a)?ic(a):(I)a;R;}if(!a->n)R;DO(a->n,rake_2p((A)a->p[i],z));R;}
Z H1(ts){A z;Z C *t[]={"int","float","char","null","box","sym","func", "unknown"}; W(gs(Et))*z->p=MS(si(t[QA(a)?(Et<a->t?6:Et>a->t?a->t:!a->n?3: Et==a->t?(QA(a=(A)*a->p)&&a->t<Xt?4:QS(a)?5:6):6): QP(a)?6:QX(a)?6:7]));R(I)z;}
void* ThreadRoutine(void* arg) { connection con = *((connection*)arg); char buffer[BUFSIZE] = "\0"; char retMsg[BUFSIZE] = "\0"; int n, found; regex_t getFile; regmatch_t matches[2]; char filename[BUFSIZE] = "\0"; FILE* temp; struct stat st; char tempStr[BUFSIZE] = "\0"; //ensure that request starts with / and not .. QA( regcomp(&getFile, "^GET /(.+) HTTP/1\\.1", REG_EXTENDED | REG_ICASE) == 0 ); //receive data n = recv(con.sock, buffer, BUFSIZE-1, 0); QAP(n >= 0, "Error reading from socket.\n", NULL); buffer[n] = '\0'; //make sure 0 is set at the end //write to weblog fputs("REMOTE ADDRESS: ", weblog); fputs(inet_ntoa(con.from.sin_addr), weblog); fputs("\n", weblog); fputs(buffer, weblog); fflush(weblog); //get file info regexec(&getFile, buffer, 2, matches, 0); strncpy(filename, buffer + matches[1].rm_so, matches[1].rm_eo - matches[1].rm_so); //handle "GET / HTTP/1.1" if( strcmp(filename, "") == 0 ) { sprintf(tempStr, "ls %s > .temp", filename); system(tempStr); strcpy(filename, ".temp"); } //get file info found = stat(filename, &st); //build return header strcpy(retMsg, "HTTP/1.1 "); if( found == -1 ) { strncat(retMsg, "404 NOT FOUND\r\n", BUFSIZE - strlen(retMsg)); strncat(retMsg, "Status: 404 NOT FOUND\r\n", BUFSIZE - strlen(retMsg)); strncat(retMsg, "\r\n", BUFSIZE - strlen(retMsg)); } else { strncat(retMsg, "200 OK\r\n", BUFSIZE - strlen(retMsg)); strncat(retMsg, "Status: 200 OK\r\n", BUFSIZE - strlen(retMsg)); strncat(retMsg, "Content-length: ", BUFSIZE - strlen(retMsg)); sprintf(retMsg, "%s%u\r\n", retMsg, st.st_size); strncat(retMsg, "Content-type: ", BUFSIZE - strlen(retMsg)); sprintf(retMsg, "%s%s\r\n", retMsg, "text/html"); strncat(retMsg, "\r\n", BUFSIZE - strlen(retMsg)); } //send headers n = send(con.sock, retMsg, strlen(retMsg), 0); QAP(n == strlen(retMsg), "Error sending headers.\n", NULL); //send body if( found == 0 ) { temp = fopen(filename, "r"); //send chunks at a time while( !feof(temp) ) { memset(retMsg, 0, BUFSIZE); fread(retMsg, 1, BUFSIZE, temp); n = send(con.sock, retMsg, strlen(retMsg), 0); QAP(n == strlen(retMsg), "Error sending body.\n", NULL); } fclose(temp); } else { //print a text body for the user strcpy(retMsg, "404 File not found"); n = send(con.sock, retMsg, strlen(retMsg), 0); QAP(n == strlen(retMsg), "Error sending body.\n", NULL); } //delete .temp file if( strcmp(filename, ".temp") ) { system("rm .temp"); } //close the connection close(con.sock); regfree(&getFile); free(arg); return 0; }
I rk(I f,A r,A a,A w) { A z=0,*p=0; if(w)ND2 else ND1; { XA; C *pp=0,*ap,*wp; I wt=0,wr=0,wn=0,*wd=0; I n=0,t=0,i,j,k,d[9],rw,ra,ri,ir,iw=0,ia=0,ii=0, e=!w&&f==MP(9),h=QP(f)&&f!=MP(71)&&!e; Q(!QA(r),9); Q(r->t,6); Q(r->n<1||r->n>3,8); ar-=ra=raw(ar,*r->p); if(!w) mv(d,ad,ra),ir=tr(ra,ad),ad+=ra; else { wt=w->t,wr=w->r,wd=w->d; wr-=rw=raw(wr,r->p[r->n>1]),ri=r->n>2?r->p[2]:9; Q(ri<0,9); if(ri>ra)ri=ra; if(ri>rw)ri=rw; mv(d,ad,ra-=ri); ia=tr(ra,ad),mv(d+ra,wd,rw),iw=tr(rw-=ri,wd); Q(cm(ad+=ra,wd+=rw,ri),11); ii=tr(ri,ad),ra+=rw+ri,ir=ia*iw*ii,wn=tr(wr,wd+=ri),ad+=ri; if(h&&ir>iw&&(f==MP(21)||f==MP(25)||f==MP(26)||f==MP(32)||f==MP(33))) h=0; } an=tr(ar,ad); if(h) { g=0; aw_c[0]=a->c; aw_c[1]=w&&w->c; r=(A)fa(f,gC(at,ar,an,ad,a->n?a->p:0),w?gC(wt,wr,wn,wd,w->n?w->p:0):0); aw_c[0]=aw_c[1]=1; if(!r)R 0; r=un(&r); mv(d+ra,r->d,j=r->r); if((j+=ra)>MAXR)R q=13,(I)r; n=r->n;t=r->t; if(ir<2) R mv(r->d,d,r->r=j),r->n*=ir,(I)r; dc(r); if(g==(I (*)())rsh) R rsh(w?w:a,j,d); if(!g){h=0;} else { if(at=atOnExit,w) wt=wtOnExit; if(at!=a->t&&!(a=at?ep_cf(1):ci(1))) R 0; if(w&&wt!=w->t&&!(w=wt?ep_cf(2):ci(2))) R 0; OF(i,ir,n); W(ga(t,j,i,d)); pp=(C*)z->p; } } if(!h) { W(ga(Et,ra,ir,d)); *--Y=zr(z),p=(A*)z->p; } if(!w) { for(ap=(C*)a->p;ir--;ap+=Tt(at,an)) if(h) (*(I(*)(C*,C*,I))g)(pp,ap,an),pp+=Tt(t,n); else a=gc(at,ar,an,ad,(I*)ap),*p++=e?a:(A)fa(f,(I)a,0); } else { for(i=0;i<ia;++i)for(j=0;j<iw;++j) for(k=0;k<ii;++k){ ap=(C*)a->p+Tt(at,(i*ii+k)*an); wp=(C*)w->p+Tt(wt,(j*ii+k)*wn); if(h) { (*(I(*)(C*,C*,C*,I))g)(pp,ap,wp,n),pp+=Tt(t,n); if(q==1)*--Y=(I)z,aplus_err(q,(A)Y[1]),++Y; } else { *p++=(A)fa(f,(I)gc(at,ar,an,ad,(I*)ap),(I)gc(wt,wr,wn,wd,(I*)wp)); } } } if(h)R(I)z; if(!e)z=(A)dis(r=z),dc(r); R ++Y,(I)z; } }