static void get_messages_listing_cb(void *session, int err, uint16_t size, gboolean newmsg, const struct messages_message *entry, void *user_data) { struct mas_session *mas = user_data; if (err < 0 && err != -EAGAIN) { obex_object_set_io_flags(mas, G_IO_ERR, err); return; } if (!mas->nth_call) { g_string_append(mas->buffer, ML_BODY_BEGIN); mas->nth_call = TRUE; } if (!entry) { g_string_append(mas->buffer, ML_BODY_END); mas->finished = TRUE; goto proceed; } g_string_append(mas->buffer, "<msg"); g_string_append_escaped_printf(mas->buffer, " handle=\"%s\"", entry->handle); if (entry->mask & PMASK_SUBJECT) g_string_append_escaped_printf(mas->buffer, " subject=\"%s\"", entry->subject); if (entry->mask & PMASK_DATETIME) g_string_append_escaped_printf(mas->buffer, " datetime=\"%s\"", entry->datetime); if (entry->mask & PMASK_SENDER_NAME) g_string_append_escaped_printf(mas->buffer, " sender_name=\"%s\"", entry->sender_name); if (entry->mask & PMASK_SENDER_ADDRESSING) g_string_append_escaped_printf(mas->buffer, " sender_addressing=\"%s\"", entry->sender_addressing); if (entry->mask & PMASK_REPLYTO_ADDRESSING) g_string_append_escaped_printf(mas->buffer, " replyto_addressing=\"%s\"", entry->replyto_addressing); if (entry->mask & PMASK_RECIPIENT_NAME) g_string_append_escaped_printf(mas->buffer, " recipient_name=\"%s\"", entry->recipient_name); if (entry->mask & PMASK_RECIPIENT_ADDRESSING) g_string_append_escaped_printf(mas->buffer, " recipient_addressing=\"%s\"", entry->recipient_addressing); if (entry->mask & PMASK_TYPE) g_string_append_escaped_printf(mas->buffer, " type=\"%s\"", entry->type); if (entry->mask & PMASK_RECEPTION_STATUS) g_string_append_escaped_printf(mas->buffer, " reception_status=\"%s\"", entry->reception_status); if (entry->mask & PMASK_SIZE) g_string_append_escaped_printf(mas->buffer, " size=\"%s\"", entry->size); if (entry->mask & PMASK_ATTACHMENT_SIZE) g_string_append_escaped_printf(mas->buffer, " attachment_size=\"%s\"", entry->attachment_size); if (entry->mask & PMASK_TEXT) g_string_append_escaped_printf(mas->buffer, " text=\"%s\"", yesorno(entry->text)); if (entry->mask & PMASK_READ) g_string_append_escaped_printf(mas->buffer, " read=\"%s\"", yesorno(entry->read)); if (entry->mask & PMASK_SENT) g_string_append_escaped_printf(mas->buffer, " sent=\"%s\"", yesorno(entry->sent)); if (entry->mask & PMASK_PROTECTED) g_string_append_escaped_printf(mas->buffer, " protected=\"%s\"", yesorno(entry->protect)); if (entry->mask & PMASK_PRIORITY) g_string_append_escaped_printf(mas->buffer, " priority=\"%s\"", yesorno(entry->priority)); g_string_append(mas->buffer, "/>\n"); proceed: if (err != -EAGAIN) obex_object_set_io_flags(mas, G_IO_IN, 0); }
void main(void) { int x = 0; /* 変数x*/ int i_index; /* 配列初期化用のカウンタ*/ int i_stop; /* 数値入力時の取り消し判断用フラグ*/ int i_temp; /* pop, enqの返り値を退避しておく変数*/ int i_com; /* コマンド入力用変数*/ int i_st_val[STACK_SIZE]; /* スタック用配列*/ int i_qu_val[QUEUE_SIZE]; /* 待ち行列用配列*/ int i_sp = STACK_SIZE; /* スタックポインタ*/ int i_tail = 0; /* 待ち行列の最後尾を管理する*/ int i_flag = -1; /* 操作終了管理フラグ*/ char c_buf[10]; /* コマンド入力用バッファ*/ /* スタックと待ち行列の配列に0を代入して、初期化する。*/ for(i_index = 0; i_index <= STACK_SIZE; i_index++) i_st_val[i_index] = 0; for(i_index = 0; i_index <= QUEUE_SIZE; i_index++) i_qu_val[i_index] = 0; while(i_flag) { /* i_flagは終了を要求されるまでずっと-1*/ i_stop = 0; printf("コマンド(1:PUSH 2:POP 3:ENQ 4:DEQ 5:Quit):"); fgets(c_buf, sizeof(c_buf), stdin); /* 数値型に変換できないもの=文字を入力されたとき,ここではじく。*/ if(atoi(c_buf) == 0) { printf("不正な入力です: %s\n", c_buf); continue; } /* 数字を入力されたとき,ここでそれを切り出す。*/ sscanf(c_buf, "%d", &i_com); /* 数字によって処理が分岐。*/ switch(i_com) { case 1: /* pushが選択された時*/ if(i_sp == 0) printf("スタックが一杯です。\n"); else { printf("何をpushしますか?:"); i_temp = digitin(&i_stop); /* digitinの処理で、取り消しフラグが立った場合,代入しない*/ if(i_stop == 1) break; else push(&i_sp, i_temp, i_st_val); } break; case 2: /* popが選択された時*/ if(i_sp == STACK_SIZE) printf("スタックは空です。\n"); else { i_temp = pop(&i_sp, i_st_val); printf("この値をxに格納しますか?(yes=0,no=1):"); if(yesorno() == 1) x = i_temp; printf("この値をpushまたはenqしますか?(yes=0,no=1):"); if(yesorno() == 1) { if(pushorenq() == 1) enq(&i_tail, i_temp, i_qu_val); else push(&i_sp, i_temp, i_st_val); } } break; case 3: /* enqが選択された時*/ if(i_tail == QUEUE_SIZE) printf("待ち行列が一杯です。\n"); else { printf("何をenqしますか?:"); i_temp = digitin(&i_stop); /* digitinの処理で、取り消しフラグが立った場合,代入しない*/ if(i_stop == 1) break; else enq(&i_tail, i_temp, i_qu_val); } break; case 4: /* deqが選択された時*/ if(i_tail == 0) printf("待ち行列は空です。\n"); else { i_temp = deq(&i_tail, i_qu_val); printf("この値をxに格納しますか?(yes=0,no=1):"); if(yesorno() == 1) x = i_temp; printf("この値をpushまたはenqしますか?(yes=0,no=1):"); if(yesorno() == 1) { if(pushorenq() == 1) enq(&i_tail, i_temp, i_qu_val); else push(&i_sp, i_temp, i_st_val); } } break; case 5: /* 終了が要求されたとき*/ printf("終了しました。\n"); i_flag++; exit(0); default: /*1-5にない数字の場合,ここではじかれる。*/ printf("不正な入力です: %d\n", i_com); } if(status(x, i_sp, i_tail, i_st_val, i_qu_val) == 0) /* 関数statusが正常に処理を終了したら0を返す。*/ printf("準備完了\n"); else { printf("異常終了\n"); /* 関数statusが0を返せなかったとき、異常終了とする。*/ exit(0); } } }
static void get_messages_listing_cb(void *session, int err, uint16_t size, gboolean newmsg, const struct messages_message *entry, void *user_data) { struct mas_session *mas = user_data; uint16_t max = 1024; gchar *mse_time; if (err < 0 && err != -EAGAIN) { obex_object_set_io_flags(mas, G_IO_ERR, err); return; } if (mas->inparams) g_obex_apparam_get_uint16(mas->inparams, MAP_AP_MAXLISTCOUNT, &max); if (max == 0) { if (!entry) mas->finished = TRUE; goto proceed; } if (!mas->nth_call) { g_string_append(mas->buffer, ML_BODY_BEGIN); mas->nth_call = TRUE; } if (!entry) { g_string_append(mas->buffer, ML_BODY_END); mas->finished = TRUE; goto proceed; } g_string_append(mas->buffer, "<msg"); g_string_append_escaped_printf(mas->buffer, " handle=\"%s\"", entry->handle); if (entry->mask & PMASK_SUBJECT) g_string_append_escaped_printf(mas->buffer, " subject=\"%s\"", entry->subject); if (entry->mask & PMASK_DATETIME) g_string_append_escaped_printf(mas->buffer, " datetime=\"%s\"", entry->datetime); if (entry->mask & PMASK_SENDER_NAME) g_string_append_escaped_printf(mas->buffer, " sender_name=\"%s\"", entry->sender_name); if (entry->mask & PMASK_SENDER_ADDRESSING) g_string_append_escaped_printf(mas->buffer, " sender_addressing=\"%s\"", entry->sender_addressing); if (entry->mask & PMASK_REPLYTO_ADDRESSING) g_string_append_escaped_printf(mas->buffer, " replyto_addressing=\"%s\"", entry->replyto_addressing); if (entry->mask & PMASK_RECIPIENT_NAME) g_string_append_escaped_printf(mas->buffer, " recipient_name=\"%s\"", entry->recipient_name); if (entry->mask & PMASK_RECIPIENT_ADDRESSING) g_string_append_escaped_printf(mas->buffer, " recipient_addressing=\"%s\"", entry->recipient_addressing); if (entry->mask & PMASK_TYPE) g_string_append_escaped_printf(mas->buffer, " type=\"%s\"", entry->type); if (entry->mask & PMASK_RECEPTION_STATUS) g_string_append_escaped_printf(mas->buffer, " reception_status=\"%s\"", entry->reception_status); if (entry->mask & PMASK_SIZE) g_string_append_escaped_printf(mas->buffer, " size=\"%s\"", entry->size); if (entry->mask & PMASK_ATTACHMENT_SIZE) g_string_append_escaped_printf(mas->buffer, " attachment_size=\"%s\"", entry->attachment_size); if (entry->mask & PMASK_TEXT) g_string_append_escaped_printf(mas->buffer, " text=\"%s\"", yesorno(entry->text)); if (entry->mask & PMASK_READ) g_string_append_escaped_printf(mas->buffer, " read=\"%s\"", yesorno(entry->read)); if (entry->mask & PMASK_SENT) g_string_append_escaped_printf(mas->buffer, " sent=\"%s\"", yesorno(entry->sent)); if (entry->mask & PMASK_PROTECTED) g_string_append_escaped_printf(mas->buffer, " protected=\"%s\"", yesorno(entry->protect)); if (entry->mask & PMASK_PRIORITY) g_string_append_escaped_printf(mas->buffer, " priority=\"%s\"", yesorno(entry->priority)); g_string_append(mas->buffer, "/>\n"); proceed: if (!entry) { mas->outparams = g_obex_apparam_set_uint16(mas->outparams, MAP_AP_MESSAGESLISTINGSIZE, size); mas->outparams = g_obex_apparam_set_uint8(mas->outparams, MAP_AP_NEWMESSAGE, newmsg ? 1 : 0); /* Response to report the local time of MSE */ mse_time = get_mse_timestamp(); if (mse_time) { g_obex_apparam_set_string(mas->outparams, MAP_AP_MSETIME, mse_time); g_free(mse_time); } } if (err != -EAGAIN) obex_object_set_io_flags(mas, G_IO_IN, 0); }