/* * html2hdml/emoji.c * processing i-mode emoji (http://www.nttdocomo.co.jp/i/tag/emoji/) * * Coprygight (C) 2000-2003 Dino Co.,Ltd. * http://www.dino.co.jp/ */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #define EMOJI_FILENAME "/x/emoji.txt" char *default_emoji_table[] = { "", /* (dummy) */ "", /* 1 ; 63647 */ "", /* 2 ; 63648 */ "", /* 3 ; 63649 */ "", /* 4 ; 63650 */ "", /* 5 ; 63651 */ "", /* 6 ; 63652 */ "", /* 7 ; 63653 */ "", /* 8 ; 63654 */ "", /* "牡羊座", 9 ; 63655 */ "", /* "牡牛座", 10 ; 63656 */ "", /* "双子座", 11 ; 63657 */ "", /* "蟹座", 12 ; 63658 */ "", /* "獅子座", 13 ; 63659 */ "", /* "乙女座", 14 ; 63660 */ "", /* "天秤座", 15 ; 63661 */ "", /* "蠍座", 16 ; 63662 */ "", /* "射手座", 17 ; 63663 */ "", /* "山羊座", 18 ; 63664 */ "", /* "水瓶座", 19 ; 63665 */ "", /* "魚座", 20 ; 63666 */ "", /* "スポーツ", 21 ; 63667 */ "", /* "野球", 22 ; 63668 */ "", /* "ゴルフ", 23 ; 63669 */ "", /* "テニス", 24 ; 63670 */ "", /* "サッカー", 25 ; 63671 */ "", /* "スキー", 26 ; 63672 */ "", /* "バスケットボール", 27 ; 63673 */ "", /* "モータースポーツ", 28 ; 63674 */ "", /* "ポケットベル", 29 ; 63675 */ "", /* "電車", 30 ; 63676 */ "", /* "地下鉄", 31 ; 63677 */ "", /* "新幹線", 32 ; 63678 */ "", /* "車(セダン)", 33 ; 63679 */ "", /* "車(RV)", 34 ; 63680 */ "", /* "バス", 35 ; 63681 */ "", /* "船", 36 ; 63682 */ "", /* "飛行機", 37 ; 63683 */ "", /* "家", 38 ; 63684 */ "", /* "ビル", 39 ; 63685 */ "", /* "郵便局", 40 ; 63686 */ "", /* "病院", 41 ; 63687 */ "", /* "銀行", 42 ; 63688 */ "", /* "ATM", 43 ; 63689 */ "", /* "ホテル", 44 ; 63690 */ "", /* "コンビニ", 45 ; 63691 */ "", /* "ガソ\リンスタンド", 46 ; 63692 */ "", /* "駐車場", 47 ; 63693 */ "", /* "信号", 48 ; 63694 */ "", /* "トイレ", 49 ; 63695 */ "", /* "レストラン", 50 ; 63696 */ "", /* "喫茶店", 51 ; 63697 */ "", /* "バー", 52 ; 63698 */ "", /* "ビール", 53 ; 63699 */ "", /* "ファーストフード", 54 ; 63700 */ "", /* "ブティック", 55 ; 63701 */ "", /* "美容院", 56 ; 63702 */ "", /* "カラオケ", 57 ; 63703 */ "", /* "映画", 58 ; 63704 */ "", /* "右斜め上", 59 ; 63705 */ "", /* "遊園地", 60 ; 63706 */ "", /* "音楽", 61 ; 63707 */ "", /* "アート", 62 ; 63708 */ "", /* "演劇", 63 ; 63709 */ "", /* "イベント", 64 ; 63710 */ "", /* "チケット", 65 ; 63711 */ "", /* "喫煙", 66 ; 63712 */ "", /* "禁煙", 67 ; 63713 */ "", /* "カメラ", 68 ; 63714 */ "", /* "カバン", 69 ; 63715 */ "", /* "本", 70 ; 63716 */ "", /* "リボン", 71 ; 63717 */ "", /* "プレゼント", 72 ; 63718 */ "", /* "バースデー", 73 ; 63719 */ "", /* "電話", 74 ; 63720 */ "", /* "携帯電話", 75 ; 63721 */ "", /* "メモ", 76 ; 63722 */ "", /* "TV", 77 ; 63723 */ "", /* "ゲーム", 78 ; 63724 */ "", /* "CD", 79 ; 63725 */ "", /* "ハート", 80 ; 63726 */ "", /* "スペード", 81 ; 63727 */ "", /* "ダイヤ", 82 ; 63728 */ "", /* "クラブ", 83 ; 63729 */ "", /* "目", 84 ; 63730 */ "", /* "耳", 85 ; 63731 */ "", /* "手(グー)", 86 ; 63732 */ "", /* "手(チョキ)", 87 ; 63733 */ "", /* "手(パー)", 88 ; 63734 */ "", /* "右斜め下", 89 ; 63735 */ "", /* "左斜め上", 90 ; 63736 */ "", /* "足", 91 ; 63737 */ "", /* "くつ", 92 ; 63738 */ "", /* "眼鏡", 93 ; 63739 */ "", /* "車椅子", 94 ; 63740 */ /* f940 */ "", /* "新月", 95 ; 63808 */ "", /* "やや欠け月", 96 ; 63809 */ "", /* "半月", 97 ; 63810 */ "", /* "三日月", 98 ; 63811 */ "", /* "満月", 99 ; 63812 */ "", /* "犬", 100 ; 63813 */ "", /* "猫", 101 ; 63814 */ "", /* "リゾート", 102 ; 63815 */ "", /* "クリスマス", 103 ; 63816 */ "", /* "左斜め下", 104 ; 63817 */ /* f972 */ "", /* "phone to", 105 ; 63858 */ "", /* "mail to", 106 ; 63859 */ "", /* "fax to", 107 ; 63860 */ "", /* "i", 108 ; 63861 */ "", /* "(i)", 109 ; 63862 */ "", /* "メール", 110 ; 63863 */ "", /* "ドコモ提供", 111 ; 63864 */ "", /* "ドコモポイント", 112 ; 63865 */ "", /* "有料", 113 ; 63866 */ "", /* "無料", 114 ; 63867 */ "", /* "ID", 115 ; 63868 */ "", /* "パスワード", 116 ; 63869 */ "", /* "次項有", 117 ; 63870 */ /* f980 */ "", /*"クリア", 118 ; 63872 */ "", /*"サーチ(調べる)", 119 ; 63873 */ "", /*"NEW", 120 ; 63874 */ "", /*"位置情報", 121 ; 63875 */ "", /*"フリーダイヤル", 122 ; 63876 */ "", /*"シャープダイヤル", 123 ; 63877 */ "", /*"モバQ", 124 ; 63878 */ "", /* 125 ; 63879 */ "", /* 126 ; 63880 */ "", /* 127 ; 63881 */ "", /* 128 ; 63882 */ "", /* 129 ; 63883 */ "", /* 130 ; 63884 */ "", /* 131 ; 63885 */ "", /* 132 ; 63886 */ "", /* 133 ; 63887 */ "", /* 134 ; 63888 */ "", /* "決定", 135 ; 63920 */ "", /* 136 ; 63889 */ "", /* 137 ; 63890 */ "", /* "失恋", 138 ; 63891 */ "", /* "ハートたち(複数ハート)", 139 ; 63892 */ "", /* "わーい(嬉しい顔)", 140 ; 63893 */ "", /* "ちっ(怒った顔)", 141 ; 63894 */ "", /* "がく〜(落胆した顔)", 142 ; 63895 */ "", /* "もうやだ〜(悲しい顔)", 143 ; 63896 */ "", /* "ふらふら", 144 ; 63897 */ "", /* "グッド(上向き矢印)", 145 ; 63898 */ "", /* "るんるん", 146 ; 63899 */ "", /* "いい気分(温泉)", 147 ; 63900 */ "", /* "かわいい", 148 ; 63901 */ "", /* "キスマーク", 149 ; 63902 */ "", /* "ぴかぴか(新しい)", 150 ; 63903 */ "", /*"ひらめき", 151 ; 63904 */ "", /*"むかっ(怒り)", 152 ; 63905 */ "", /*"パンチ", 153 ; 63906 */ "", /*"爆弾", 154 ; 63907 */ "", /*"ムード", 155 ; 63908 */ "", /*"バッド(下向き矢印)", 156 ; 63909 */ "", /*"zzz", 157 ; 63910 */ "", /*"!", 158 ; 63911 */ "", /*"!?", 159 ; 63912 */ "", /*"!!", 160 ; 63913 */ "", /*"どんっ(衝撃)", 161 ; 63914 */ "", /*"あせあせ(飛び散る汗)", 162 ; 63915 */ "", /*"たらーっ(汗)", 163 ; 63916 */ "", /*"ダッシュ(走り出すさま)", 164 ; 63917 */ "", /*"ー", 165 ; 63918 */ "", /*"ー", 166 ; 63919 */ }; char *emoji_table[167]; /* 外部絵文字ファイル読み込み: フォーマットは、 0個以上の空白文字・絵文字番号・1個以上の空白文字・変換後の文字列 絵文字番号は http://www.nttdocomo.co.jp/i/tag/emoji/ 参照のこと。 */ int set_emoji_table() { int i; for (i = 0; i <= 166; i++) { emoji_table[i] = default_emoji_table[i]; } #ifndef MOD_HTML2HDML { FILE *fp; char *emoji_filename; emoji_filename = EMOJI_FILENAME; fp = fopen(emoji_filename, "r"); if (fp) { char buf[2048]; while (fgets(buf, 2048, fp)) { char *p; p = strchr(buf, '\0'); while (buf < p) { /* 行末の改行をとり除く */ p--; if (strchr("\r\n", *p) == NULL) break; *p = '\0'; } p = buf + strspn(buf, " \t\r\n"); /* 行頭の空白文字をskip */ if ((i = strspn(p, "0123456789")) != 0) { long int j; /* i文字は数字部分 */ j = strtol(p, NULL, 10); if (j > 0 && j <= 166) { p += i; if ((i = strspn(p, " \t\r\n")) != 0) { /* i文字は空白文字 */ p += i; emoji_table[j] = strdup(p); } } } } fclose(fp); } } #endif return 0; }