X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=src%2Fmodel.c;h=8aaa20bba7f7268ce015024abe8007288c2ead13;hb=46974bb948c0a7ca82b476a578b6199e438bab41;hp=6b8e758a9912db4582c801168e811425f0fecb5d;hpb=9576479a013cce9694bb2e4e045162baed1c2470;p=rodin%2Fchimara.git diff --git a/src/model.c b/src/model.c index 6b8e758..8aaa20b 100644 --- a/src/model.c +++ b/src/model.c @@ -2,6 +2,11 @@ static winid_t mainwin = NULL; +void sayit(void) +{ + fprintf(stderr, "I'm the interrupt handler!\n"); +} + void glk_main(void) { /* Open the main window. */ @@ -12,27 +17,62 @@ void glk_main(void) return; } - /* Set the current output stream to print to it. */ - glk_set_window(mainwin); - - unsigned char buffer[256]; + +/* char buffer[256]; int i; for(i = 0; i < 256; i++) - buffer[i] = glk_char_to_upper(i); + buffer[i] = (char)glk_char_to_upper(i); - glk_put_string("Philip en Marijn zijn vet goed.\n"); - glk_put_buffer((gchar *)buffer, 256); + frefid_t f = glk_fileref_create_temp(fileusage_BinaryMode, 0); + if(f) + { - frefid_t f = - glk_fileref_create_by_prompt(fileusage_TextMode, filemode_Write, 0); - if(f) { - if( glk_fileref_does_file_exist(f) ) - glk_put_string("\n\nFile exists!\n"); - else - glk_put_string("\n\nFile does not exist!\n"); + strid_t s = glk_stream_open_file(f, + filemode_ReadWrite, 0); + glk_stream_set_current(s); + + glk_put_char('X'); + glk_put_string("Philip en Marijn zijn vet goed.\n"); + glk_put_buffer(buffer, 256); + + glk_stream_set_position(s, 0, seekmode_Start); + glk_set_window(mainwin); + glk_put_char( glk_get_char_stream(s) ); + glk_put_char('\n'); + g_printerr("Line read: %d\n", glk_get_line_stream(s, buffer, 256)); + glk_put_string(buffer); + int count = glk_get_buffer_stream(s, buffer, 256); + g_printerr("Buffer read: %d\n", count); + glk_put_buffer(buffer, count); + + stream_result_t result; + glk_stream_close(s, &result); + + g_printerr("Read count: %d\nWrite count: %d\n", result.readcount, + result.writecount); glk_fileref_destroy(f); - } else - glk_put_string("\n\nCancel was clicked!\n"); + } + */ + + glk_set_window(mainwin); + + glk_set_interrupt_handler(&sayit); + + gchar buffer[256]; + event_t ev; + while(1) { + glk_put_string("prompt> "); + glk_request_line_event(mainwin, buffer, 256, 0); + glk_select(&ev); + switch(ev.type) { + default: + printf("Received event:\n"); + printf("Type: %d\n", ev.type); + printf("Win: %d\n", glk_window_get_rock(ev.win)); + printf("Var1: %d\n", ev.val1); + printf("Var2: %d\n", ev.val2); + } + } /* Bye bye */ glk_exit();