LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Programming (http://www.linuxquestions.org/questions/programming-9/)
-   -   Segmentation fault on toplevel = XtVaAppInitialize(&app, "Email", NULL, 0, &argc, (http://www.linuxquestions.org/questions/programming-9/segmentation-fault-on-toplevel-%3D-xtvaappinitialize-and-app-email-null-0-and-argc-292310/)

cbranje 02-19-2005 12:06 PM

Segmentation fault on toplevel = XtVaAppInitialize(&app, "Email", NULL, 0, &argc,
 
toplevel = XtVaAppInitialize(&app, "Email", NULL, 0, &argc, argv, NULL, NULL);

This line is giving my a segmentation fault on the lab computers, not when I log in remotely from home?!?!?!?

Here is my code, sorry for the mess (notice the first line in main that seg faults)

#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;
XtAppContext app;

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 button_send();
void button_receive();
void button_folders();
void button_quit();

int main(argc, argv)
char *argv[];
{




toplevel = XtVaAppInitialize(&app, "Email", NULL, 0, &argc, argv, NULL, 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);

red = 0;
blue = 65535;
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);
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;


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);







if ((username = getlogin()) == NULL) {
fprintf(stderr, "Who are you?\n");
exit(1);
}
strcpy(location, "/usr/mail/");
strcat(location, username);


XtRealizeWidget(toplevel);
XtAppMainLoop(app);
return 0;

}


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);


}


All times are GMT -5. The time now is 04:49 AM.