Changeset 18fdd5f9be6de827a19aceb95d4769058b145869

Show
Ignore:
Timestamp:
10/27/09 00:41:17 (4 weeks ago)
Author:
Alejandro R. Sedeño <asedeno@mit.edu>
git-author:
Alejandro R. Sedeño <asedeno@mit.edu> / 2009-10-24T17:31:48Z-0400
Parents:
ffc4df61a846d99a75783f7d348fb98dd19910aa
Children:
6fc40a789c812bcdaacbe64f88178bb1409d1071
git-committer:
Alejandro R. Sedeño <asedeno@mit.edu> / 2009-10-27T00:41:17Z-0400
Message:
Switch C to the new I/O Dispatch API.

Signed-off-by: Alejandro R. Sedeño <asedeno@mit.edu>
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • owl.c

    r23fddad r18fdd5f  
    315315} 
    316316 
    317 void owl_process_input(owl_dispatch *d) 
     317void owl_process_input(const owl_io_dispatch *d, void *data) 
    318318{ 
    319319  owl_input j; 
     
    444444 
    445445/* Sends stderr (read from rfd) messages to the error console */ 
    446 void stderr_redirect_handler(owl_dispatch *d) 
     446void stderr_redirect_handler(const owl_io_dispatch *d, void *data) 
    447447{ 
    448448  int navail, bread; 
     
    521521  owl_global_set_haveaim(&g); 
    522522 
    523   /* prepare stdin dispatch */ 
    524   { 
    525     owl_dispatch *d = owl_malloc(sizeof(owl_dispatch)); 
    526     d->fd = STDIN; 
    527     d->cfunc = &owl_process_input; 
    528     d->destroy = NULL; 
    529     owl_select_add_dispatch(d); 
    530   } 
    531  
     523  /* register STDIN dispatch; throw away return, we won't need it */ 
     524  owl_select_add_io_dispatch(STDIN, OWL_IO_READ, &owl_process_input, NULL, NULL); 
    532525  owl_zephyr_initialize(); 
    533526 
    534527#if OWL_STDERR_REDIR 
    535528  /* Do this only after we've started curses up... */ 
    536   { 
    537     owl_dispatch *d = owl_malloc(sizeof(owl_dispatch)); 
    538     owl_function_debugmsg("startup: doing stderr redirection"); 
    539     d->fd = stderr_replace(); 
    540     d->cfunc = stderr_redirect_handler; 
    541     d->destroy = NULL; 
    542     owl_select_add_dispatch(d); 
    543   } 
     529  owl_function_debugmsg("startup: doing stderr redirection"); 
     530  owl_select_add_io_dispatch(stderr_replace(), OWL_IO_READ, &stderr_redirect_handler, NULL, NULL); 
    544531#endif 
    545532 
  • owl.h

    rdf0138f r18fdd5f  
    530530  int winactive; 
    531531  pid_t pid;                    /* or 0 if it has terminated */ 
    532   owl_dispatch dispatch; 
     532  const owl_io_dispatch *dispatch; 
    533533} owl_popexec; 
    534534 
  • popexec.c

    r0e5afa2 r18fdd5f  
    5353    pe->pid=pid; 
    5454    pe->winactive=1; 
    55     pe->dispatch.fd = parent_read_fd; 
    56     pe->dispatch.cfunc = owl_popexec_inputhandler; 
    57     pe->dispatch.destroy = owl_popexec_free_dispatch; 
    58     pe->dispatch.data = pe; 
    59     owl_select_add_dispatch(&pe->dispatch); 
     55    pe->dispatch = owl_select_add_io_dispatch(parent_read_fd, OWL_IO_READ|OWL_IO_EXCEPT, &owl_popexec_inputhandler, &owl_popexec_delete_dispatch, pe); 
    6056    pe->refcount++; 
    6157  } else { 
     
    7874} 
    7975 
    80 void owl_popexec_inputhandler(owl_dispatch *d) 
     76void owl_popexec_inputhandler(const owl_io_dispatch *d, void *data) 
    8177{ 
    82   owl_popexec *pe = d->data; 
     78  owl_popexec *pe = data; 
    8379  int navail, bread, rv_navail; 
    8480  char *buf; 
     
    9995  /* the viewwin has closed */ 
    10096  if (!pe->pid && !pe->winactive) { 
    101     owl_select_remove_dispatch(d->fd); 
     97    owl_select_remove_io_dispatch(d); 
    10298    return; 
    10399  } 
     
    116112      owl_viewwin_redisplay(pe->vwin, 1); 
    117113    } 
    118     owl_select_remove_dispatch(d->fd); 
     114    owl_select_remove_io_dispatch(d); 
    119115    return; 
    120116  } 
     
    146142} 
    147143 
    148 void owl_popexec_free_dispatch(owl_dispatch *d) 
     144void owl_popexec_delete_dispatch(const owl_io_dispatch *d) 
    149145{ 
    150146  owl_popexec *pe = d->data; 
     
    159155 
    160156  pe->winactive = 0; 
    161   if (pe->dispatch.fd>0) { 
    162     owl_select_remove_dispatch(pe->dispatch.fd); 
     157  if (pe->dispatch->fd > 0) { 
     158    owl_select_remove_io_dispatch(pe->dispatch); 
    163159  } 
    164160  if (pe->pid) { 
  • zephyr.c

    r12e291a r18fdd5f  
    3636  ZNotice_t req; 
    3737  Code_t code; 
    38   owl_dispatch *dispatch; 
    3938 
    4039  /* 
     
    8079  } 
    8180 
    82   dispatch = owl_malloc(sizeof(*dispatch)); 
    83   dispatch->fd = ZGetFD(); 
    84   dispatch->cfunc = owl_zephyr_finish_initialization; 
    85   dispatch->destroy = (void(*)(owl_dispatch*))owl_free; 
    86  
    87   owl_select_add_dispatch(dispatch); 
    88 } 
    89  
    90 void owl_zephyr_finish_initialization(owl_dispatch *d) { 
     81  owl_select_add_io_dispatch(ZGetFD(), OWL_IO_READ|OWL_IO_EXCEPT, &owl_zephyr_finish_initialization, NULL, NULL); 
     82} 
     83 
     84void owl_zephyr_finish_initialization(const owl_io_dispatch *d, void *data) { 
    9185  Code_t code; 
    9286  char *perl; 
    9387 
    94   owl_select_remove_dispatch(d->fd); 
     88  owl_select_remove_io_dispatch(d); 
    9589 
    9690  ZClosePort(); 
     
    106100  } 
    107101 
    108   d = owl_malloc(sizeof(owl_dispatch)); 
    109   d->fd = ZGetFD(); 
    110   d->cfunc = &owl_zephyr_process_events; 
    111   d->destroy = NULL; 
    112   owl_select_add_dispatch(d); 
     102  owl_select_add_io_dispatch(ZGetFD(), OWL_IO_READ|OWL_IO_EXCEPT, &owl_zephyr_process_events, NULL, NULL); 
     103 
    113104  owl_global_set_havezephyr(&g); 
    114105 
     
    13501341} 
    13511342 
    1352 void owl_zephyr_process_events(owl_dispatch *d) 
     1343void owl_zephyr_process_events(const owl_io_dispatch *d, void *data) 
    13531344{ 
    13541345  _owl_zephyr_process_events();