JunkBox_Lib  1.10.2
xtools.h
Go to the documentation of this file.
1 #ifndef __JBXL_EXTEND_TOOLS_H_
2 #define __JBXL_EXTEND_TOOLS_H_
3 
12 #include "tlist.h"
13 #include "network.h"
14 
15 #ifndef WIN32
16  #include <dirent.h>
17 #endif
18 
19 
20 // File Save & Load Mode
21 #define JBXL_FIO_ANY 0x0000
22 #define JBXL_FIO_IPADDRESS 0x0001
23 #define JBXL_FIO_PRIV_KEY 0x000a
24 #define JBXL_FIO_PUB_KEY 0x000b
25 #define JBXL_FIO_SPKI 0x000c
26 
27 #define JBXL_FIO_ORIGINAL 0x0000 // 本来のデータ形式.曖昧!!
28 #define JBXL_FIO_BIN 0x0000
29 #define JBXL_FIO_DER 0x0000
30 #define JBXL_FIO_BASE64 0x0010
31 #define JBXL_FIO_STRING 0x0030
32 #define JBXL_FIO_AES 0x00a0
33 #define JBXL_FIO_DES 0x00b0
34 #define JBXL_FIO_3DES 0x00c0
35 
36 
38 // Network
39 
40 // for IPv4 互換用
41 int udp_recv_Buffer_sockaddr_in(int sock, Buffer* buf, struct sockaddr_in* sv);
42 int udp_send_Buffer_sockaddr_in(int sock, Buffer* buf, struct sockaddr_in* sv);
43 int udp_send_sBuffer_sockaddr_in(int sock, Buffer* buf, struct sockaddr_in* sv);
44 int udp_recv_Buffer_wait_sockaddr_in(int sock, Buffer* buf, struct sockaddr_in* sv_addr, int tm);
45 
46 struct sockaddr_in get_sockaddr_in_Buffer(Buffer buf);
47 
48 // for IPv4/IPv6
49 int udp_recv_Buffer(int sock, Buffer* buf, struct addrinfo* sv);
50 int udp_send_Buffer(int sock, Buffer* buf, struct addrinfo* sv);
51 int tcp_recv_Buffer(int sock, Buffer* buf);
52 int tcp_send_Buffer(int sock, Buffer* buf);
53 
54 int udp_recv_Buffer_wait(int sock, Buffer* buf, struct addrinfo* sv_addr, int tm);
55 int tcp_recv_Buffer_wait(int sock, Buffer* buf, int tm);
56 
57 int tcp_recv_Buffer_tosize (int sock, Buffer* b, Buffer* m, int sz);
58 int tcp_recv_Buffer_tosize_wait(int sock, Buffer* b, Buffer* m, int sz, int tm);
59 
60 int udp_send_sBuffer (int sock, Buffer* buf, struct addrinfo* sv);
61 int tcp_send_sBuffer (int sock, Buffer* buf);
62 int tcp_send_sBufferln (int sock, Buffer* buf);
63 
64 int tcp_recv_mstream_Buffer(int sock, Buffer* buf, mstream* sb, int tm);
65 int tcp_recv_lines_Buffer(int sock, Buffer* buf, int tm);
66 
67 // URL
68 Buffer comp_hostport(char* ipaddr, unsigned short port);
69 int decomp_hostport(Buffer buf, Buffer* ipaddr, unsigned short* port);
70 
71 Buffer comp_url(char* protocol, char* host, unsigned short port, char* dir);
72 int decomp_url(Buffer url, Buffer* srvurl, Buffer* protocol, Buffer* srvfqdn, unsigned short* sport, Buffer* srvdir);
73 
74 Buffer make_form_urlenc(const char* key, const char* val);
75 void add_form_urlenc(Buffer* buf, const char* key, const char* val);
76 
77 #define make_hostport(h, p) comp_hostport((h), (p))
78 #define make_url(t, h, p, d) comp_url((t), (h), (p), (d))
79 
81 // File I/O
82 int save_tagged_Buffer(Buffer buf, FILE* fp, unsigned int mode, int prfm);
83 Buffer read_tagged_Buffer(FILE* fp, unsigned int* mode);
85 
87 // Run Length
88 int get_runlength_byte(unsigned char* buf, int len, int pos);
89 Buffer decode_runlength (unsigned char* buf, int len, int sz);
90 Buffer encode_runlength (unsigned char* buf, int len);
91 
92 #define get_runlength_byte_Buffer(b, s) get_runlength_byte((b).buf, (b).vldsz, (s))
93 #define decode_runlength_Buffer(b, s) decode_runlength((b).buf, (b).vldsz, (s))
94 #define encode_runlength_Buffer(b) encode_runlength((b).buf, (b).vldsz)
95 
97 // Ring Buffer
98 
101 
103 // 配列
106 
107 Buffer* awk_Buffer_dim (Buffer buf, char cc);
108 Buffer* cawk_Buffer_dim(Buffer buf, char cc);
109 Buffer join_Buffer_dim(Buffer* dim, const char* deli);
110 
112 
113 void del_Buffer_dim(Buffer** buf);
114 
116 // tList and Buffer
119 
121 // Extend tList
122 int set_item_tList(tList* list, char* key, int no, char deli, int nm, char* value);
123 int replace_item_tList(tList* list, char* key, int no, char deli, int nm, char* srcval, char* value);
124 int set_item_tList_node(tList* list, char deli, int nm, char* value);
125 int replace_item_tList_node(tList* list, char deli, int nm, char* srcval, char* value);
126 
128 // File, Directory
129 tList* get_dir_files(const char* dirn);
130 tList* get_dir_files_rcsv(const char* dirn);
131 
132 void rm_dir_rcsv(const char* dirn);
133 
134 void del_file_extension_Buffer(Buffer* path);
135 void change_file_extension_Buffer(Buffer* path, const char* ext);
136 
137 Buffer relative_path_Buffer(Buffer path_a, Buffer path_b);
138 void canonical_filename_Buffer(Buffer* fname, int no_dir);
139 
141 // Resource (file) List
142 tList* _add_key_val_list(tList* pp, tList* list, const char* key, const char* val, int mode);
143 tList* add_resource_list(const char* path, int keylen, tList* list, tList* extn, int mode);
144 char* get_resource_path(const char* name, tList* lp);
145 
146 
147 #endif // __JBXL_EXTEND_TOOLS_H_
148 
unsigned char ** buf
Definition: jpeg_tool.h:96
unsigned char unsigned long * len
Definition: jpeg_tool.h:96
ネットワーク用ライブラリヘッダ for IPv4/IPv6
Definition: buffer.h:35
Tiny List 構造ライブラリヘッダ
#define mstream
バイト型 メッセージストリーム
Definition: tools.h:167
tList * get_dir_files(const char *dirn)
指定されたディレクトリにあるファイル名の一覧を取得.
Definition: xtools.c:1818
Buffer decode_runlength(unsigned char *buf, int len, int sz)
0の連長圧縮された bufから szバイトの通常のデータを取り出す.
Definition: xtools.c:1149
Buffer * cawk_Buffer_dim(Buffer buf, char cc)
文字列を cawkで分解して配列を作る
Definition: xtools.c:1453
Buffer comp_hostport(char *ipaddr, unsigned short port)
ホスト名とポート番号から,"ホスト名:ポート番号" の文字列を生成する.
Definition: xtools.c:687
int replace_item_tList(tList *list, char *key, int no, char deli, int nm, char *srcval, char *value)
key をキーにした no番目のノードに対して replace_item_tList_node() を行う.
Definition: xtools.c:1740
Buffer comp_url(char *protocol, char *host, unsigned short port, char *dir)
"プロトコル://ホスト名:ポート番号/ディレクトリ名" の文字列を生成する.
Definition: xtools.c:757
tList * get_tList_line_Buffer(Buffer buf, int n)
buf から n行目を取り出して,' ' で分解してリストに格納して返す.
Definition: xtools.c:1603
int save_tagged_Buffer(Buffer buf, FILE *fp, unsigned int mode, int prfm)
Bufferを指定された形式に従ってタグ付きでファイルに保存する.
Definition: xtools.c:956
int tcp_send_sBuffer(int sock, Buffer *buf)
TCP経由で文字列データを送信する.
Definition: xtools.c:524
int tcp_recv_mstream_Buffer(int sock, Buffer *buf, mstream *sb, int tm)
TCP経由でメッセージを受信する.バッファリングあり.
Definition: xtools.c:592
Buffer * decompline_Buffer_dim(Buffer buf, int mode)
データを行単位に分解する.改行は \r\n
Definition: xtools.c:1479
int udp_send_sBuffer(int sock, Buffer *buf, struct addrinfo *sv)
UDP経由で文字列データを送る.
Definition: xtools.c:499
void canonical_filename_Buffer(Buffer *fname, int no_dir)
fname の問題になりそうな ASCII文字を '_' に変換する.
Definition: xtools.c:2057
Buffer encode_runlength(unsigned char *buf, int len)
bufの szバイトを 0で連長圧縮する
Definition: xtools.c:1198
int tcp_send_Buffer(int sock, Buffer *buf)
TCP経由でデータを送信する.
Definition: xtools.c:305
int tcp_recv_Buffer(int sock, Buffer *buf)
TCP経由でデータを受信する.バッファリングなし.
Definition: xtools.c:276
int tcp_recv_Buffer_tosize_wait(int sock, Buffer *b, Buffer *m, int sz, int tm)
TCP経由でデータを size バイトまで受信する.待ち時間を指定できる.
Definition: xtools.c:453
int tcp_recv_Buffer_wait(int sock, Buffer *buf, int tm)
TCP経由でデータを受信する.待ち時間(タイムアウト)を指定できる.
Definition: xtools.c:370
tList * add_resource_list(const char *path, int keylen, tList *list, tList *extn, int mode)
ディレクトリ pathを検索して,リソースリストにファイルを追加し,リストの先頭を返す.
Definition: xtools.c:2133
void rm_dir_rcsv(const char *dirn)
指定されたディレクトリを再帰的に削除する.
Definition: xtools.c:1923
int replace_item_tList_node(tList *list, char deli, int nm, char *srcval, char *value)
deliを区切りにした nm番目の項目(文字列)の srcval部分を valueで置き換える.
Definition: xtools.c:1772
struct sockaddr_in get_sockaddr_in_Buffer(Buffer buf)
FQDN:port または IPaddress:port の形式の Buffer変数から ソケット情報を得る.IPv4専用
Definition: xtools.c:156
tList * get_tList_seq_data_Buffer(Buffer buf, int *ptr)
buf から行データをシーケンシャルに取り出して,それぞれを ' ' で分解してリストに格納して返す.
Definition: xtools.c:1628
int put_Buffer_ringBuffer(ringBuffer *rb, Buffer *buf)
リングバッファ rb へ Buffer データを vldszバイト格納する.
Definition: xtools.c:1249
Buffer relative_path_Buffer(Buffer path_a, Buffer path_b)
path_a から path_b への相対パスを返す.
Definition: xtools.c:1995
int udp_send_Buffer_sockaddr_in(int sock, Buffer *buf, struct sockaddr_in *sv)
sendto() をラッピングした関数.UDP経由でデータを送る.IPv4専用.
Definition: xtools.c:72
int tcp_recv_Buffer_tosize(int sock, Buffer *b, Buffer *m, int sz)
TCP経由でデータを size バイトまで受信する.バッファリングなし.
Definition: xtools.c:400
void change_file_extension_Buffer(Buffer *path, const char *ext)
ファイルの拡張子を extにする.ファイルに拡張子が無い場合は extを付加する
Definition: xtools.c:1960
int udp_recv_Buffer_sockaddr_in(int sock, Buffer *buf, struct sockaddr_in *sv)
recvform()をラッピングした関数.UDPデータを受信する.IPv4専用.
Definition: xtools.c:38
Buffer * get_Buffer_dim_tList_value(tList *lp)
リストを分解してバリュー部(val)の配列を造る
Definition: xtools.c:1377
tList * get_dir_files_rcsv(const char *dirn)
指定されたディレクトリにあるファイル名の一覧を再帰的に取得.
Definition: xtools.c:1904
char * get_resource_path(const char *name, tList *lp)
リソースの名前から,ファイルのパスを得る.戻り値は free() してはいけない.
Definition: xtools.c:2176
void add_form_urlenc(Buffer *buf, const char *key, const char *val)
既存の文字に &key=val (valはURL Encodeされる) を追加する.
Definition: xtools.c:904
Buffer * get_Buffer_ringBuffer(ringBuffer *rb, int sz)
リングバッファ rb から szバイトのデータを取り出し,Buffer型データに格納する.要 del_Buffer()
Definition: xtools.c:1290
void del_Buffer_dim(Buffer **buf)
配列を削除する.
Definition: xtools.c:1567
int udp_recv_Buffer_wait_sockaddr_in(int sock, Buffer *buf, struct sockaddr_in *sv_addr, int tm)
UDP経由でデータを受信する.IPv4専用.
Definition: xtools.c:130
int udp_recv_Buffer(int sock, Buffer *buf, struct addrinfo *sv)
recvform()をラッピングした関数.UDPデータを受信する.
Definition: xtools.c:212
Buffer read_tagged_Buffer(FILE *fp, unsigned int *mode)
save_tagged_Buffer() で保存したファイルから,Buffer をタグに従って読み込む.
Definition: xtools.c:1013
Buffer fgets_mstream_Buffer(Buffer buf, mstream *sb)
メッセージ buf.buf はメッセージストリームに一旦バッファリングされ,この関数により一行ずつ読み出される.
Definition: xtools.c:1080
Buffer make_form_urlenc(const char *key, const char *val)
key=val (valはURL Encodeされる)の文字を作成する.
Definition: xtools.c:884
Buffer join_Buffer_dim(Buffer *dim, const char *deli)
配列の要素を dliを間に入れて繋げる
Definition: xtools.c:1541
tList * _add_key_val_list(tList *pp, tList *list, const char *key, const char *val, int mode)
Definition: xtools.c:2099
int udp_recv_Buffer_wait(int sock, Buffer *buf, struct addrinfo *sv_addr, int tm)
UDP経由でデータを受信する.待ち時間(タイムアウト)を指定できる.
Definition: xtools.c:337
int decomp_url(Buffer url, Buffer *srvurl, Buffer *protocol, Buffer *srvfqdn, unsigned short *sport, Buffer *srvdir)
URLを分解する.
Definition: xtools.c:807
void del_file_extension_Buffer(Buffer *path)
ファイルの拡張子を削除する.
Definition: xtools.c:1941
int set_item_tList_node(tList *list, char deli, int nm, char *value)
deliを区切りにした nm番目の項目(文字列)に value を設定する
Definition: xtools.c:1697
Buffer * awk_Buffer_dim(Buffer buf, char cc)
文字列を awkで分解して配列を作る
Definition: xtools.c:1426
int decomp_hostport(Buffer buf, Buffer *ipaddr, unsigned short *port)
"ホスト名:ポート番号" 形式の文字列から,ホスト名とポート番号を分離する.
Definition: xtools.c:720
int get_runlength_byte(unsigned char *buf, int len, int pos)
圧縮されていない状態で pos(Byte)の位置が,0の連長圧縮されているデータではどの位置に来るかを計算する
Definition: xtools.c:1116
int udp_send_Buffer(int sock, Buffer *buf, struct addrinfo *sv)
sendto() をラッピングした関数.UDP経由でデータを送る.
Definition: xtools.c:248
int udp_send_sBuffer_sockaddr_in(int sock, Buffer *buf, struct sockaddr_in *sv)
DP経由で文字列データを送る.IPv4専用
Definition: xtools.c:99
int tcp_send_sBufferln(int sock, Buffer *buf)
TCPメッセージ(文字列)に改行(0x0d, 0x0a)を付け加えて送信する.
Definition: xtools.c:546
int tcp_recv_lines_Buffer(int sock, Buffer *buf, int tm)
TCP経由でメッセージを複数行受信する.簡易バッファリングあり.
Definition: xtools.c:646
int set_item_tList(tList *list, char *key, int no, char deli, int nm, char *value)
key をキーにした no番目のノードに対して set_item_tList_node() を行う.
Definition: xtools.c:1668
Buffer * get_Buffer_dim_tList(tList *lp)
リストを分解してキー部(key)の配列を造る
Definition: xtools.c:1330