Subversion Repositories Kolibri OS

Rev

Rev 6825 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.  
  2. /* waits for LASTPID or pid in param */
  3. int cmd_waitfor(char param[]) {
  4.         int             i, n, sel, sel_pid;
  5.         char            *buf1k;
  6.         unsigned        PID;
  7.         short           STATE;
  8.  
  9.         sel = param && strlen(param) > 0;
  10.         sel_pid = LAST_PID;
  11.         if (sel) {
  12.                 sel_pid = atoi(param);
  13.         }
  14.         if (0 == sel_pid) return FALSE;
  15.  
  16.         printf(CMD_WAITFOR_FMT, sel_pid);
  17.  
  18.         buf1k = malloc(1024);
  19.         if (NULL == buf1k)
  20.                 return FALSE;
  21.  
  22.         while(1) {
  23.                 for (i = 1;;i++) {
  24.                         n = kol_process_info(i, buf1k);
  25.                         PID = *(buf1k+30);
  26.                         STATE = *(buf1k+50);
  27.                         if (PID == sel_pid)
  28.                                 if(9 == STATE)
  29.                                         goto exit_normal;
  30.                                 else break;
  31.                         if (i == n)
  32.                                 goto exit_normal;
  33.                 }
  34.                 kol_sleep(10); // 100ms
  35.         }
  36.  
  37.         exit_normal:
  38.         free(buf1k);
  39.         return TRUE;
  40.  
  41. }
  42.  
  43.