Thread: Wierd Segmentation Faults on Global Variable

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    and the hat of int overfl Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    39,666
    1. Use code tags.
    2. Post code that will compile.
    3. Use something like ANSI-C, that style of C is about 20 years old.

    State operating systems and compilers.
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.

  2. #2
    Registered User
    Join Date
    Nov 2004
    Posts
    6

    Code style

    No ........, this is the bull........ you have to put with at Ryerson Computer Science. I'm just trying to work with the code i was given. I"ll check out the tags and throw up my code in one sec . . .

    Carmen

  3. #3
    Registered User
    Join Date
    Nov 2004
    Posts
    6

    my code . . .

    Code:
    #include <X11/Intrinsic.h>
    #include <X11/StringDefs.h>
    #include <stdio.h>
    #include <Xm/List.h>
    #include <Xm/LabelG.h>
    #include <Xm/Label.h>
    #include <Xm/RowColumn.h>
    #include <Xm/PanedW.h>
    #include <Xm/TextF.h>
    #include <Xm/PushB.h>
    #include <Xm/BulletinB.h>
    #include <X11/Shell.h>
    #include <string.h>
    #include <stddef.h>
    #include <sys/types.h>
    #include <dirent.h>
    
    #define TRUE 1
    #define FALSE 0
    
    //Widget toplevel;
    XmStringCharSet charset = XmSTRING_DEFAULT_CHARSET;
    
    XmString lastItemSelected;
    XmString      label;
    Pixel pixel1, pixel2, pixel3;
    XColor alloc_color;
    Colormap cmap;
    Display *display;    
    Widget toplevel;
    Widget  rowcol;
    Widget rowcol2;
    Widget message;
    Widget to;
    Widget cc;
    Widget subject;
    Widget send;
    Widget receive;
    Widget help;
    Widget quit;
    Widget sendMessage;
    Widget compose_shell;
    Widget compose;
    Widget receive_shell;
    Widget folder_shell;
    Widget receiveList;
    Widget folder;
    Widget folderList;
    Widget deleteMessageButton;
    Widget replyMessageButton;
    Widget folders;
    Arg args[10];
    unsigned short red, green, blue;
    int position;
    char *messageVal;
    char *toVal;
    char *ccVal;
    char *subjectVal;
    char *lastMessage;
    char *getlogin();
    char *mailLocation;
    char *username;
    char location[999999];
    
    
    void add_item();
    void search_item();
    void drawComposeWin();
    void drawReceiveWin(); 
    void drawFoldersWin(); 
    void drawHelpWin(); 
    void sendMsg(); 
    void messageSelected();
    void deleteMessage(); 
    void button_help();
    
    
    
    
    
    void replyMessage(w, client_data, call_data)
    Widget w;
    caddr_t client_data;
    XmAnyCallbackStruct *call_data;
    {
        char *replyTo;
        char *tempItem;
        
        XtPopdown(receive_shell);
        receive_shell = NULL;
        drawComposeWin();
        
        XmStringGetLtoR(lastItemSelected, XmSTRING_DEFAULT_CHARSET, &tempItem);
        XmTextFieldSetString(to, tempItem);
    
    
    
        
    }
    void deleteMessage(w, client_data, call_data)
    Widget w;
    caddr_t client_data;
    XmAnyCallbackStruct *call_data;
    {
        
        
        int foundMessage = FALSE;
        int atEndofMessage = FALSE;
        int onDeleteMessage = FALSE;
        FILE *fp;
        char *temp;
        char line[1000000];
        char newMailFile[1000000];
        int line_length = 9999;
        XmString messages[999];
        int numOfMessages = 0;
        XmString tempXmString[999];
        int i;
        int num=0;
    
        strcpy(line, "");
        strcpy(temp, "");
        
        
        fp = fopen(location, "r");
        while(fgets(temp, 99999999, fp) != NULL ){
            if(temp[0] == 'F' && temp[1] == 'r' && temp[2] == 'o' && temp[3] == 'm' && temp[4] != ':' && temp[5] != 'M' && temp[6] != 'A' && temp[7] != 'I' && temp[8] != 'L' && temp[9] != 'E' && temp[10] != 'R'){
                numOfMessages++;    
                        
            }
            if(numOfMessages != position){
                strcat(newMailFile, temp);
            }    
        }
        
        fclose(fp);
        
        
        fp = fopen(location, "w");
        
        XmListDeleteAllItems(receiveList);
        fclose(fp);
        fp = fopen(location, "r");
        while( fgets(temp, 99999999, fp) != NULL ){
            if(temp[0] == 'F' && temp[1] == 'r' && temp[2] == 'o' && temp[3] == 'm' && temp[4] != ':' && temp[5] != 'M' && temp[6] != 'A' && temp[7] != 'I' && temp[8] != 'L' && temp[9] != 'E' && temp[10] != 'R'){
                    if(atEndofMessage == FALSE && foundMessage == FALSE){
                        num++;
                        numOfMessages++;
                        foundMessage = TRUE;    
                        atEndofMessage = FALSE;    
                        for(i=5; temp[i] != ' '; i++){
                            temp[-5+i] = temp[i];
                            
                        }
                        temp[i-5] = '\0';
                        
                        
                        tempXmString[0] = XmStringCreateSimple(temp);
                        XmListAddItems(receiveList, tempXmString, 1, numOfMessages - 1);
                        
                    }
                    else if(foundMessage == TRUE){
                        atEndofMessage = TRUE;
                        for(i=5; temp[i] != ' '; i++){
                            temp[-5+i] = temp[i];
                            
                        }
                        temp[i-5] = '\0';
                        
                        tempXmString[0] = XmStringCreateSimple(temp);
                        XmListAddItems(receiveList, tempXmString, 1, numOfMessages - 1);
                    }
            }
            
            if(foundMessage == TRUE && atEndofMessage == FALSE){
                strcat(line, temp);
                
            }
            if(atEndofMessage == TRUE){
                strcat(line, "\n------------------------------------------------------------------\n");
                strcpy(line, "");
                atEndofMessage = FALSE;
                strcat(line, temp);
            }
            
        }
        XmTextSetString(message, "");
        fclose(fp);
        
    }
    
    void messageSelected(w, client_data, call_data)
    Widget w;
    caddr_t client_data;
    XmListCallbackStruct *call_data;
    {
        int foundMessage = FALSE;
        int atEndofMessage = FALSE;
        FILE *fp;
        char temp[100];
        char line[1000000];
        int line_length = 9999;
        XmString messages[999];
        int numOfMessages = 0;
        int num = 0;
        XmString tempXmString[999];
        position = call_data->item_position;
        lastItemSelected = call_data->item;
        
        
        
        strcpy(line, "");
        strcpy(temp, "");
        
    
        fp = fopen(location, "r");
        while(fgets(temp, 99999999, fp) != NULL ){
            if(temp[0] == 'F' && temp[1] == 'r' && temp[2] == 'o' && temp[3] == 'm' && temp[4] != ':' && temp[5] != 'M' && temp[6] != 'A' && temp[7] != 'I' && temp[8] != 'L' && temp[9] != 'E' && temp[10] != 'R'){
                                    
                atEndofMessage = TRUE;
                foundMessage = FALSE;
    
            }
            if(temp[0] == 'X' && temp[1] == '-' && temp[2] == 'U' && temp[3] == 'I'){
                fgets(temp, 99999, fp);
                if(temp[0] == '\n'){
    
                    num++;
                    numOfMessages++;                                    
                    foundMessage = TRUE;
                    atEndofMessage = FALSE;
                    strcpy(line, "");                    
                }
        
            }
            if(temp[0] == 'X' && temp[1] == '-' && temp[2] == 'O' && temp[3] == 'r' && temp[4] == 'c'){
                fgets(temp, 99999, fp);
                if(temp[0] == '\n'){    
                    num++;
                    numOfMessages++;
                                        
                    foundMessage = TRUE;
                    atEndofMessage = FALSE;
                    strcpy(line, "");                    
                }
            }        
            if(atEndofMessage == FALSE && foundMessage == TRUE){
                
                if((position) == numOfMessages){
    
                    XmTextSetString(message, "");
                    XmTextSetString(message, line);
                    atEndofMessage = FALSE;
    
                }
                
            }
            if(foundMessage == TRUE && atEndofMessage == FALSE){
                strcat(line, temp);
    
                
            }
            
        }
        lastMessage = XmTextGetString(message);
        
        fclose(fp);
    
        
    ;
    }
    void folderSelected(w, client_data, call_data)
    Widget w;
    caddr_t client_data;
    XmListCallbackStruct *call_data;
    {
        int foundMessage = FALSE;
        int atEndofMessage = FALSE;
        FILE *fp;
        char temp[100];
        char line[1000000];
        char *tempDirectory;
        char *directory;
        char *home;
        int line_length = 9999;
        XmString messages[999];
        int numOfMessages = 0;
        XmString tempXmString[999];
        
        
        home = getenv("HOME");
        XmStringGetLtoR(call_data->item, XmSTRING_DEFAULT_CHARSET, &tempDirectory);
    
    
            XtFree(directory);
        XtFree(tempDirectory);
    
        
    ;
    }
    void button_folders(w, client_data, call_data)
    Widget w;
    caddr_t client_data;
    XmAnyCallbackStruct *call_data;
    {
        drawFoldersWin();
    }
     void button_receive(w, client_data, call_data)
    Widget w;
    caddr_t client_data;
    XmAnyCallbackStruct *call_data;
    {
        drawReceiveWin();
    }
    void button_send(w, client_data, call_data)
    Widget w;
    caddr_t client_data;
    XmAnyCallbackStruct *call_data;
    {
        drawComposeWin();
    }
    void button_help(w, client_data, call_data)
    Widget w;
    caddr_t client_data;
    XmAnyCallbackStruct *call_data;
    {
        drawHelpWin();
    } 
    void button_quit(w, client_data, call_data)
    Widget w;
    caddr_t client_data;
    XmAnyCallbackStruct *call_data;
    {
        exit(1);
    }
    void sendMsg(w, client_data, call_data)
    Widget w;
    caddr_t client_data;
    XmAnyCallbackStruct *call_data;
    {
        FILE *fp;
        int pid, pipefds[2];
        char *username, *getlogin();
        
        XtVaGetValues(message, XmNvalue, &messageVal, NULL); 
        XtVaGetValues(to, XmNvalue, &toVal, NULL);
        XtVaGetValues(cc, XmNvalue, &ccVal, NULL);
        XtVaGetValues(subject, XmNvalue, &subjectVal, NULL);
        
        
        if (pipe(pipefds) < 0) {
        perror("pipe");
        exit(1);
        }
        
        if ((pid = fork()) < 0) {
        perror("fork");
        exit(1);
        }
        
        if (pid == 0) {
        close(0);
        dup(pipefds[0]);
        close(pipefds[0]);
        close(pipefds[1]);
        execl("/bin/mail", "mail", "-s", subjectVal, toVal, 0);
        perror("exec");
        
        }
        
        close(pipefds[0]);
        
        
        fp = fdopen(pipefds[1], "w");
        
        fprintf(fp, "%s", messageVal);
        fclose(fp);
        
           while (wait((int *) 0) != pid);
        
        XtVaSetValues(message, XmNvalue, "", NULL); 
        XtVaSetValues(to, XmNvalue, "", NULL);
        XtVaSetValues(cc, XmNvalue, "", NULL);
        XtVaSetValues(subject, XmNvalue, "", NULL);
    
    }
    void drawHelpWin(){
        int foundMessage = FALSE;
        int atEndofMessage = FALSE;
        FILE *fp;
        char temp[100];
        char helpFile[1000000];
        int line_length = 9999;
        XmString messages[999];
        int numOfMessages;
        XmString tempXmString[999];
        int i;
        char home[99999];
             
        XtVaGetValues(toplevel, XtNcolormap, &cmap, NULL); 
        compose_shell = XtCreatePopupShell("Compose Message Window", transientShellWidgetClass, toplevel, NULL, 0);
        compose = XtCreateManagedWidget("compose", xmRowColumnWidgetClass, compose_shell, NULL, 0);
        XtVaSetValues(compose, XmNbackground, pixel1, NULL);
    
        rowcol = XtVaCreateWidget("rowcol", xmBulletinBoardWidgetClass, compose,  XmNbackground, pixel1, NULL);
    
    
         
       
        label = XmStringCreateSimple("Help:");
        XtVaCreateManagedWidget("message_label", xmLabelWidgetClass, rowcol,
            XmNx, 0,
            XmNy, 10,        
            XmNlabelString,  label,
            NULL);
        
        XmStringFree(label);
        XtSetArg(args[0], XmNrows,      50);
        XtSetArg(args[1], XmNcolumns,  80);
        XtSetArg(args[2], XmNeditable,  True);
        XtSetArg(args[3], XmNeditMode,  XmMULTI_LINE_EDIT);
        XtSetArg(args[4], XmNx, 0);
        XtSetArg(args[5], XmNy, 30);
        
        message = XmCreateScrolledText(rowcol, "message", args, (Cardinal *)6); 
        XtManageChild(message);
        
        XtVaSetValues(compose_shell, 
            XmNx, 100, 
            XmNy, 100,
            XmNwidth, 600, 
            XmNheight, 700,
            XmNbackground, pixel1,
            NULL);
            
        fp = fopen("./help", "r");
        while( fgets(temp, 99999999, fp) != NULL ){
            strcat(helpFile, temp);
            
        }
        XmTextSetString(message, helpFile);
        XtPopup(compose_shell, XtGrabExclusive);
            XtManageChild(rowcol);
            XtRealizeWidget(compose_shell);
    }
    void drawComposeWin(){
          
        XtVaGetValues(toplevel, XtNcolormap, &cmap, NULL); 
        compose_shell = XtCreatePopupShell("Compose Message Window", transientShellWidgetClass, toplevel, NULL, 0);
        compose = XtCreateManagedWidget("compose", xmRowColumnWidgetClass, compose_shell, NULL, 0);
        XtVaSetValues(compose, XmNbackground, pixel1, NULL);
    
        rowcol = XtVaCreateWidget("rowcol", xmBulletinBoardWidgetClass, compose,  XmNbackground, pixel1, NULL);
    
        label = XmStringCreateSimple("To:");
         XtVaCreateManagedWidget(
            "to", 
            xmLabelWidgetClass, rowcol,
            XmNlabelString,  label,
            XmNx, 0,
            XmNy, 0,
            NULL);
            
        XmStringFree(label);
            
        to = XtVaCreateManagedWidget("to",
            xmTextFieldWidgetClass, rowcol,
            XmNx, 0,
            XmNy, 30,
            NULL);
        
    
        label = XmStringCreateSimple("CC:");
        XtVaCreateManagedWidget("search_label", xmLabelWidgetClass, rowcol,
            XmNlabelString,  label,
            XmNx, 0,
            XmNy, 60,
            NULL);
        XmStringFree(label);
        
        cc = XtVaCreateManagedWidget("cc",
            xmTextFieldWidgetClass, rowcol,
            XmNcolumns,     25,
          XmNx, 0,
        XmNy, 80,
            NULL);
     
       
        label = XmStringCreateSimple("Subject:");
        XtVaCreateManagedWidget("search_label", xmLabelWidgetClass, rowcol,
            XmNlabelString,  label,
          XmNx, 0,
        XmNy, 110,            
            NULL);
        XmStringFree(label);
        subject = XtVaCreateManagedWidget("subject",
            xmTextFieldWidgetClass, rowcol,
          XmNx, 0,
        XmNy, 130,        
        XmNcolumns,     25,
            NULL);
      
         
       
        label = XmStringCreateSimple("Message:");
        XtVaCreateManagedWidget("message_label", xmLabelWidgetClass, rowcol,
            XmNx, 0,
            XmNy, 160,        
            XmNlabelString,  label,
            NULL);
        
        XmStringFree(label);
        XtSetArg(args[0], XmNrows,      30);
        XtSetArg(args[1], XmNcolumns,   80);
        XtSetArg(args[2], XmNeditable,  True);
        XtSetArg(args[3], XmNeditMode,  XmMULTI_LINE_EDIT);
        XtSetArg(args[4], XmNx, 0);
        XtSetArg(args[5], XmNy, 180);
        
        message = XmCreateScrolledText(rowcol, "message", args, (Cardinal *)6); 
        XtManageChild(message);
        
        
        XtSetArg(args[0], XmNwidth,      50);
        XtSetArg(args[1], XmNheight,      30);
        XtSetArg(args[2], XmNx,      200);
        XtSetArg(args[3], XmNy,      30);
           
        sendMessage = XtCreateManagedWidget("Send", xmPushButtonWidgetClass, rowcol, args, (Cardinal *)4);
        XtAddCallback(sendMessage, XmNactivateCallback, sendMsg, NULL);
        
        
        XtVaSetValues(compose_shell, 
            XmNx, 100, 
            XmNy, 100,
            XmNwidth, 600, 
            XmNheight, 700,
            XmNbackground, pixel1,
            NULL);
            
        XtPopup(compose_shell, XtGrabExclusive);
            XtManageChild(rowcol);
            XtRealizeWidget(compose_shell);
    }
    void drawReceiveWin(){
        
        int foundMessage = FALSE;
        int atEndofMessage = FALSE;
        FILE *fp;
        char temp[10000];
        char line[1000000];
        int line_length = 9999;
        XmString messages[999];
        int numOfMessages;
        XmString tempXmString[999];
        int i;
        int num=0;
        
        XtVaGetValues(toplevel, XtNcolormap, &cmap, NULL); 
         
            receive_shell = XtCreatePopupShell("Receive Mail Window", transientShellWidgetClass, toplevel, NULL, 0);
    
            receive = XtCreateManagedWidget("compose"
            , xmRowColumnWidgetClass, receive_shell, 
            NULL, 0);
            
            XtVaSetValues(receive, XmNbackground, pixel2, NULL);
        
            rowcol = XtVaCreateWidget("rowcol",
                xmBulletinBoardWidgetClass, receive, 
                XmNbackground, pixel2,
                NULL);
           
           label = XmStringCreateSimple("Messages: ");
              XtVaCreateManagedWidget("messagesLabel", xmLabelWidgetClass, rowcol,
            XmNlabelString,  label,
            XmNx, 0,
            XmNy, 0,
            NULL);
         XmStringFree(label);
             label = XmStringCreateSimple("Message Text: ");
            XtVaCreateManagedWidget("message_label", xmLabelWidgetClass, rowcol,
            XmNx, 220,
            XmNy, 0,        
            XmNlabelString,  label,
            NULL);
        XmStringFree(label);
        
        XtSetArg(args[0], XmNrows,      30);
        XtSetArg(args[1], XmNcolumns,   80);
        XtSetArg(args[2], XmNeditable,  True);
        XtSetArg(args[3], XmNeditMode,  XmMULTI_LINE_EDIT);
        XtSetArg(args[4], XmNx, 220);
        XtSetArg(args[5], XmNy, 50);
        XtSetArg(args[6], XmNwidth, 300);
    
    
        message = XmCreateScrolledText(rowcol, "message", args, 7); 
        XtManageChild(message);
        
          receiveList = XtVaCreateManagedWidget("receiveList",
            xmListWidgetClass, rowcol,
        XmNx, 0,
        XmNy, 50,
        XmNwidth, 200, 
             XmNheight, 500,
        XmNlistSizePolicy, XmCONSTANT,
        XmNselectionPolicy, XmEXTENDED_SELECT,
    
        NULL);
        XtAddCallback(receiveList, XmNextendedSelectionCallback, messageSelected, NULL);
        XtAddCallback(receiveList, XmNdefaultActionCallback, messageSelected, NULL);
        
     
        
        fp = fopen(location, "r");
    
        while( fgets(temp, 99999999, fp) != NULL ){
            
            if(temp[0] == 'F' && temp[1] == 'r' && temp[2] == 'o' && temp[3] == 'm' && temp[4] != ':' && temp[5] != 'M' && temp[6] != 'A' && temp[7] != 'I' && temp[8] != 'L' && temp[9] != 'E' && temp[10] != 'R'){
                                         
                    if(atEndofMessage == FALSE && foundMessage == FALSE){
                        num++;
                        numOfMessages++;
                        foundMessage = TRUE;    
                        atEndofMessage = FALSE;    
                        for(i=5; temp[i] != ' '; i++){
                            temp[-5+i] = temp[i];
                            
                        }
                        temp[i-5] = '\0';
                        tempXmString[0] = XmStringCreateSimple(temp);
                        XmListAddItems(receiveList, tempXmString, 1, numOfMessages - 1);
    
                    }
                    else if(foundMessage == TRUE){
                        atEndofMessage = TRUE;
                        for(i=5; temp[i] != ' '; i++){
                            temp[-5+i] = temp[i];
                            
                        }
                        temp[i-5] = '\0';
                        
                        tempXmString[0] = XmStringCreateSimple(temp);
                        XmListAddItems(receiveList, tempXmString, 1, numOfMessages - 1);
                                    
                    }
            }
            
            if(foundMessage == TRUE && atEndofMessage == FALSE){
                strcat(line, temp);
                
            }
            if(atEndofMessage == TRUE){
                
                strcat(line, "\n------------------------------------------------------------------\n");
    
                strcpy(line, "");
                atEndofMessage = FALSE;
                strcat(line, temp);
                                
            }
    
            
        }
      
        fclose(fp);
    
        XtSetArg(args[0], XmNwidth,      50);
        XtSetArg(args[1], XmNheight,      30);
        XtSetArg(args[2], XmNx,      525);
        XtSetArg(args[3], XmNy,      50);
                
        deleteMessageButton = XtCreateManagedWidget("Delete", xmPushButtonWidgetClass, rowcol, args, (Cardinal *)4);
        XtAddCallback(deleteMessageButton, XmNactivateCallback, deleteMessage, NULL);
          
        XtSetArg(args[0], XmNwidth,      50);
        XtSetArg(args[1], XmNheight,      30);
        XtSetArg(args[2], XmNx,      525);
        XtSetArg(args[3], XmNy,      90);
    
        replyMessageButton = XtCreateManagedWidget("Reply", xmPushButtonWidgetClass, rowcol, args, (Cardinal *)4);
        XtAddCallback(replyMessageButton, XmNactivateCallback, replyMessage, NULL);
        XtVaSetValues(receive_shell, 
            XmNx, 100, 
            XmNy, 100,
            XmNwidth, 600, 
            XmNheight, 700,
            NULL);
        XtPopup(receive_shell, XtGrabExclusive);
        XtManageChild(rowcol);
        XtRealizeWidget(receive_shell);
    }
    void drawFoldersWin(){
        
        int foundMessage = FALSE;
        int atEndofMessage = FALSE;
        char temp[100];
        char line[10000];
        int line_length = 9999;
        XmString messages[999];
        int numOfMessages;
        XmString tempXmString[999];
        int i;
        char home[99999];    DIR *dp;
        struct dirent *ep;
         
        strcpy(home, getenv("HOME"));
        
    
    
            strcat(home, "/mail");
        dp = opendir (home);
        
      
        XtVaGetValues(toplevel, XtNcolormap, &cmap, NULL); 
    
            folder_shell = XtCreatePopupShell("Receive Mail Window", transientShellWidgetClass, toplevel, NULL, 0);
        XtVaSetValues(folder_shell, 
            XmNx, 100, 
            XmNy, 100,
            XmNwidth, 750, 
            XmNheight, 700,
            XmNbackground, pixel3,
            NULL);
            
        folder = XtCreateManagedWidget("folder"
            , xmRowColumnWidgetClass, folder_shell, 
            NULL, 0);
                
            XtVaSetValues(folder, XmNbackground, pixel3, NULL);
        
            rowcol = XtVaCreateWidget("rowcol",
                xmBulletinBoardWidgetClass, folder, 
                XmNbackground, pixel3,
                NULL);
           
           label = XmStringCreateSimple("Folders: ");
              XtVaCreateManagedWidget("foldersLabel", xmLabelWidgetClass, rowcol,
            XmNlabelString,  label,
            XmNx, 0,
            XmNy, 0,    
            NULL);
         XmStringFree(label);
         
        label = XmStringCreateSimple("Message Text: ");
            XtVaCreateManagedWidget("message_label", xmLabelWidgetClass, rowcol,
            XmNx, 440,
            XmNy, 0,        
            XmNlabelString,  label,
            NULL);
        XmStringFree(label);
         
        XtSetArg(args[0], XmNrows,      30);
        XtSetArg(args[1], XmNcolumns,   40);
        XtSetArg(args[2], XmNeditable,  True);
        XtSetArg(args[3], XmNeditMode,  XmMULTI_LINE_EDIT);
        XtSetArg(args[4], XmNx, 440);
        XtSetArg(args[5], XmNy, 50);
        
        message = XmCreateScrolledText(rowcol, "message", args, (Cardinal *)6); 
        XtManageChild(message);
    
          folderList = XtVaCreateManagedWidget("folderList",
            xmListWidgetClass, rowcol,
        XmNx, 0,
        XmNy, 50,
        XmNwidth, 200, 
             XmNheight, 500,
        XmNlistSizePolicy, XmCONSTANT,
        XmNselectionPolicy, XmEXTENDED_SELECT,
    
        NULL);
        XtAddCallback(folderList, XmNextendedSelectionCallback, folderSelected, NULL);
        XtAddCallback(folderList, XmNdefaultActionCallback, folderSelected, NULL);
        
        if (dp != NULL)
        {
            while (ep = readdir (dp)){
                tempXmString[0] = XmStringCreateSimple(ep->d_name);
                XmListAddItems(folderList, tempXmString, 1, numOfMessages - 1);
            }
            (void) closedir (dp);
        }
        else{
            perror ("Couldn't open the directory");
        }
        
        
           receiveList = XtVaCreateManagedWidget("receiveList",
            xmListWidgetClass, rowcol,
        XmNx, 225,
        XmNy, 50,
        XmNwidth, 200, 
             XmNheight, 500,
        XmNlistSizePolicy, XmCONSTANT,
        XmNselectionPolicy, XmEXTENDED_SELECT,
    
        NULL);
        XtAddCallback(receiveList, XmNextendedSelectionCallback, messageSelected, NULL);
        XtAddCallback(receiveList, XmNdefaultActionCallback, messageSelected, NULL);
        
    
            
        
        XtPopup(folder_shell, XtGrabExclusive);
        XtManageChild(rowcol);
        XtRealizeWidget(folder_shell);
        
     
    }
    main(argc, argv)
    char *argv[];
    {
        XtAppContext  app;
        Widget toplevel;
        
    
       if ((username = getlogin()) == NULL) {  
            fprintf(stderr, "Who are you?\n");
            exit(1);
        }
    
        red = 0;
        blue = 65535;
        green = 0;
    
        toplevel = XtVaAppInitialize(&app, "Demos", NULL, 0, &argc, argv, NULL, NULL);
    printf("........");
    exit(1);
        rowcol2 = XtVaCreateManagedWidget("rowcol2", xmBulletinBoardWidgetClass, toplevel, XmNbackground, pixel1,NULL);
        
       
        XtSetArg(args[0], XmNwidth,      50);
        XtSetArg(args[1], XmNheight,      30);
        XtSetArg(args[2], XmNx,      20);
        XtSetArg(args[3], XmNy,      30);
        send = XtCreateManagedWidget("Compose", xmPushButtonWidgetClass, rowcol2, args, 4);
        XtAddCallback(send, XmNactivateCallback, button_send, NULL);
        
        XtSetArg(args[0], XmNwidth,      50);
        XtSetArg(args[1], XmNheight,      30);
        XtSetArg(args[2], XmNx,      80);
        XtSetArg(args[3], XmNy,      30);
        receive = XtCreateManagedWidget("Receive", xmPushButtonWidgetClass, rowcol2, args, 4);
        XtAddCallback(receive, XmNactivateCallback, button_receive, NULL);
    
        XtSetArg(args[0], XmNwidth,      50);
        XtSetArg(args[1], XmNheight,      30);
        XtSetArg(args[2], XmNx,      140);
        XtSetArg(args[3], XmNy,      30);
        folders = XtCreateManagedWidget("Folders", xmPushButtonWidgetClass, rowcol2, args, 4);
        XtAddCallback(folders, XmNactivateCallback, button_folders, NULL);    
    
        XtSetArg(args[0], XmNwidth,      50);
        XtSetArg(args[1], XmNheight,      30);
        XtSetArg(args[2], XmNx,      200);
        XtSetArg(args[3], XmNy,      30);
        help = XtCreateManagedWidget("Help", xmPushButtonWidgetClass, rowcol2, args, 4);
        XtAddCallback(help, XmNactivateCallback, button_help, NULL); 
        
        XtSetArg(args[0], XmNwidth,      50);
        XtSetArg(args[1], XmNheight,      30);
        XtSetArg(args[2], XmNx,      260);
        XtSetArg(args[3], XmNy,      30);
        quit = XtCreateManagedWidget("Quit", xmPushButtonWidgetClass, rowcol2, args, 4);
        XtAddCallback(quit, XmNactivateCallback, button_quit, NULL); 
        
        display = XtDisplay(toplevel);
        XtVaGetValues(toplevel, XtNcolormap, &cmap, NULL);
        
        alloc_color.red = red;
        alloc_color.blue = blue;
        alloc_color.green = green;
        alloc_color.flags = DoRed|DoGreen|DoBlue;
        
        XAllocColor(display, cmap, &alloc_color);
        
        pixel1 = alloc_color.pixel;
        
        red = 65535;
        blue = 0;
        green = 0;
        
        alloc_color.red = red;
        alloc_color.blue = blue;
        alloc_color.green = green;
        alloc_color.flags = DoRed|DoGreen|DoBlue;
        
        XAllocColor(display, cmap, &alloc_color);
        pixel2 = alloc_color.pixel;
        
        red = 0;
        blue = 0;
        green = 65535;
        
        alloc_color.red = red;
        alloc_color.blue = blue;
        alloc_color.green = green;
        alloc_color.flags = DoRed|DoGreen|DoBlue;
        
        XAllocColor(display, cmap, &alloc_color);
        pixel3 = alloc_color.pixel;
        
        /*
         * Get the user's name.
         */
        if ((username = getlogin()) == NULL) {  
            fprintf(stderr, "Who are you?\n");
            exit(1);
        }
    
        
        
        
        strcpy(location, "/usr/mail/");
        strcat(location, username);
        
        
        XtRealizeWidget(toplevel);
        XtAppMainLoop(app);
        
    }

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. scope of global variable vs. static
    By chiefmonkey in forum C++ Programming
    Replies: 4
    Last Post: 06-21-2009, 12:23 PM
  2. deleting and re-assigning a global variable pointer
    By Canadian0469 in forum C++ Programming
    Replies: 2
    Last Post: 12-20-2008, 03:47 PM
  3. wierd segmentation fault with fopen
    By jaredw in forum C Programming
    Replies: 5
    Last Post: 08-27-2008, 07:43 PM
  4. global variable at dynamic library
    By Mortissus in forum C++ Programming
    Replies: 2
    Last Post: 07-31-2007, 02:44 PM
  5. Variable Allocation in a simple operating system
    By awkeller in forum C Programming
    Replies: 1
    Last Post: 12-08-2001, 02:26 PM