home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / emacs-18.59-src.tgz / emacs-18.59-src.tar / fsf / emacs18 / oldXMenu / FindSel.c < prev    next >
C/C++ Source or Header  |  1996-09-28  |  1KB  |  73 lines

  1. #include "copyright.h"
  2.  
  3. /* $Header: FindSel.c,v 1.2 87/12/20 12:05:07 rws Exp $ */
  4. /* Copyright    Massachusetts Institute of Technology    1985    */
  5.  
  6. /*
  7.  * XMenu:    MIT Project Athena, X Window system menu package
  8.  *
  9.  *    XMenuFindSelection - Find the first selection in a pane who's
  10.  *                 label matches a particular string.
  11.  *
  12.  *    Author:        Tony Della Fera, DEC
  13.  *            January 22, 1986
  14.  *
  15.  */
  16.  
  17. #include "XMenuInt.h"
  18.  
  19. int
  20. XMenuFindSelection(menu, p_num, label)
  21.     register XMenu *menu;
  22.     int p_num;
  23.     register char *label;
  24. {
  25.     register XMPane *p_ptr;
  26.     register XMSelect *s_ptr;
  27.     register int i = 0;
  28.  
  29.     /*
  30.      * Check for NULL pointers!
  31.      */
  32.     if (label == NULL) {
  33.     _XMErrorCode = XME_ARG_BOUNDS;
  34.     return(XM_FAILURE);
  35.     }
  36.  
  37.     /*
  38.      * Find the right pane.
  39.      */
  40.     p_ptr = _XMGetPanePtr(menu, p_num);
  41.     if (p_ptr == NULL) return(XM_FAILURE);
  42.  
  43.     /*
  44.      * Find the right selection.
  45.      */
  46.     for (
  47.     s_ptr = p_ptr->s_list->next;
  48.     s_ptr != p_ptr->s_list;
  49.     s_ptr = s_ptr->next
  50.     ){
  51.     if (s_ptr->label_length == 0) {
  52.         if (*label == '\0') {
  53.         _XMErrorCode = XME_NO_ERROR;
  54.         return (i);
  55.         }
  56.     }
  57.     else {
  58.         if (strncmp (label, s_ptr->label, s_ptr->label_length) == 0) {
  59.         _XMErrorCode = XME_NO_ERROR;
  60.         return (i);
  61.         }
  62.     }
  63.     i++;
  64.     }
  65.  
  66.     /*
  67.      * If we get here then we have not found
  68.      * a match.
  69.      */
  70.     _XMErrorCode = XME_S_NOT_FOUND;
  71.     return (XM_FAILURE);
  72. }
  73.