Subversion Repositories wimsdev

Rev

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 *pu, *p1, tbuf[MAX_LINELEN+1];
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
    snprintf(vbuf,sizeof(vbuf),"%s/%s/.parmreg", class_base, pc);
191
/*    snprintf(vbuf,sizeof(vbuf),"%s/%s/.parmreg", class_base, pc);
173
    mkdirs(vbuf);
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);