Rev 13168 | Rev 17415 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 13168 | Rev 17255 | ||
---|---|---|---|
Line 146... | Line 146... | ||
146 | fnd_line(buf[0],1,buf[1]); if(buf[1][0]==0) goto bad2; |
146 | fnd_line(buf[0],1,buf[1]); if(buf[1][0]==0) goto bad2; |
147 | force_setvar(ro_name[ro_module],buf[1]); |
147 | force_setvar(ro_name[ro_module],buf[1]); |
148 | fnd_line(buf[0],2,eparm); /* if(eparm[0]==0) goto bad2; */ |
148 | fnd_line(buf[0],2,eparm); /* if(eparm[0]==0) goto bad2; */ |
149 | exam_parm(); |
149 | exam_parm(); |
150 | } |
150 | } |
- | 151 | ||
- | 152 | /* detect open exam in other session and forbidden open a new */ |
|
- | 153 | char *pu, pbuf1[MAX_LINELEN+1]; |
|
- | 154 | pu=getvar("wims_user"); if(pu==NULL) pu=""; |
|
- | 155 | snprintf(pbuf1,sizeof(pbuf1),"%s/%s/.parmreg", class_base, pc); |
|
- | 156 | mkdirs(pbuf1); |
|
- | 157 | snprintf(pbuf1,sizeof(pbuf1),"%s/%s/.parmreg/%s.exam",class_base, pc, pu); |
|
- | 158 | if(stat(pbuf1,&st)==0) { /* search for other session ?? */ |
|
- | 159 | /* read file pbuf1 */ |
|
- | 160 | char pbuf2[MAX_LINELEN+1], *pf1, *pf2; |
|
- | 161 | accessfile(pbuf2,"r",pbuf1); |
|
- | 162 | pf1=find_word_start(find_word_end(find_word_start(pbuf2)));pf2=find_word_end(pf1); |
|
- | 163 | memmove(pbuf2,pf1,pf2-pf1);pbuf2[pf2-pf1]=0; |
|
- | 164 | if( strcmp(pbuf2,pb)!=0) { /* other exam session open */ |
|
- | 165 | user_error("other_exam_session"); return; |
|
- | 166 | } |
|
- | 167 | } |
|
- | 168 | /* end of add for detect */ |
|
- | 169 | ||
151 | /* Register start time */ |
170 | /* Register start time */ |
152 | snprintf(vbuf,sizeof(vbuf),"%s/%s/examreg.%d", |
171 | snprintf(vbuf,sizeof(vbuf),"%s/%s/examreg.%d", |
153 | session_dir,pb,t1); |
172 | session_dir,pb,t1); |
154 | if(stat(vbuf,&st)==0) { /* reg exists */ |
173 | if(stat(vbuf,&st)==0) { /* reg exists */ |
155 | char tbuf[MAX_LINELEN+1]; |
174 | char tbuf[MAX_LINELEN+1]; |
Line 161... | Line 180... | ||
161 | /* refresh session times */ |
180 | /* refresh session times */ |
162 | ut.actime=ut.modtime=nowtime; |
181 | ut.actime=ut.modtime=nowtime; |
163 | utime(mkfname(NULL,"%s/%s",session_dir,pb),&ut); |
182 | utime(mkfname(NULL,"%s/%s",session_dir,pb),&ut); |
164 | } |
183 | } |
165 | else { /* First time call: register starting time */ |
184 | else { /* First time call: register starting time */ |
166 | char |
185 | char *p1, tbuf[MAX_LINELEN+1]; |
167 | snprintf(dbuf,sizeof(dbuf),"%u",(unsigned int) nowtime); |
186 | snprintf(dbuf,sizeof(dbuf),"%u",(unsigned int) nowtime); |
168 | accessfile(dbuf,"w","%s",vbuf); start=nowtime; |
187 | accessfile(dbuf,"w","%s",vbuf); start=nowtime; |
169 | if(pc==NULL) pc=getvar("wims_class"); |
188 | if(pc==NULL) pc=getvar("wims_class"); |
170 | if(pc==NULL) pc=""; |
189 | if(pc==NULL) pc=""; |
171 | pu=getvar("wims_user"); if(pu==NULL) pu=""; |
190 | pu=getvar("wims_user"); if(pu==NULL) pu=""; |
172 |
|
191 | /* snprintf(vbuf,sizeof(vbuf),"%s/%s/.parmreg", class_base, pc); |
173 | mkdirs |
192 | mkdirs(vbuf);*/ |
174 | snprintf(vbuf,sizeof(vbuf),"%s/%s/.parmreg/%s.exam", |
193 | snprintf(vbuf,sizeof(vbuf),"%s/%s/.parmreg/%s.exam", |
175 | class_base, pc, pu); |
194 | class_base, pc, pu); |
176 | p1=remote_addr; |
195 | p1=remote_addr; |
177 | snprintf(dbuf,sizeof(dbuf),"%s %s %u %d", |
196 | snprintf(dbuf,sizeof(dbuf),"%s %s %u %d", |
178 | p1, pb, (unsigned int) start+duration, t1); |
197 | p1, pb, (unsigned int) start+duration, t1); |