JunkBox_Lib++ (for Windows) 1.10.1
Loading...
Searching...
No Matches
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 互換用
41int udp_recv_Buffer_sockaddr_in(int sock, Buffer* buf, struct sockaddr_in* sv);
42int udp_send_Buffer_sockaddr_in(int sock, Buffer* buf, struct sockaddr_in* sv);
43int udp_send_sBuffer_sockaddr_in(int sock, Buffer* buf, struct sockaddr_in* sv);
44int udp_recv_Buffer_wait_sockaddr_in(int sock, Buffer* buf, struct sockaddr_in* sv_addr, int tm);
45
46struct sockaddr_in get_sockaddr_in_Buffer(Buffer buf);
47
48// for IPv4/IPv6
49int udp_recv_Buffer(int sock, Buffer* buf, struct addrinfo* sv);
50int udp_send_Buffer(int sock, Buffer* buf, struct addrinfo* sv);
51int tcp_recv_Buffer(int sock, Buffer* buf);
52int tcp_send_Buffer(int sock, Buffer* buf);
53
54int udp_recv_Buffer_wait(int sock, Buffer* buf, struct addrinfo* sv_addr, int tm);
55int tcp_recv_Buffer_wait(int sock, Buffer* buf, int tm);
56
57int tcp_recv_Buffer_tosize (int sock, Buffer* b, Buffer* m, int sz);
58int tcp_recv_Buffer_tosize_wait(int sock, Buffer* b, Buffer* m, int sz, int tm);
59
60int udp_send_sBuffer (int sock, Buffer* buf, struct addrinfo* sv);
61int tcp_send_sBuffer (int sock, Buffer* buf);
62int tcp_send_sBufferln (int sock, Buffer* buf);
63
64int tcp_recv_mstream_Buffer(int sock, Buffer* buf, mstream* sb, int tm);
65int tcp_recv_lines_Buffer(int sock, Buffer* buf, int tm);
66
67// URL
68Buffer comp_hostport(char* ipaddr, unsigned short port);
69int decomp_hostport(Buffer buf, Buffer* ipaddr, unsigned short* port);
70
71Buffer comp_url(char* protocol, char* host, unsigned short port, char* dir);
72int decomp_url(Buffer url, Buffer* srvurl, Buffer* protocol, Buffer* srvfqdn, unsigned short* sport, Buffer* srvdir);
73
74Buffer make_form_urlenc(const char* key, const char* val);
75void 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
82int save_tagged_Buffer(Buffer buf, FILE* fp, unsigned int mode, int prfm);
83Buffer read_tagged_Buffer(FILE* fp, unsigned int* mode);
85
87// Run Length
88int get_runlength_byte(unsigned char* buf, int len, int pos);
89Buffer decode_runlength (unsigned char* buf, int len, int sz);
90Buffer 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
107Buffer* awk_Buffer_dim (Buffer buf, char cc);
108Buffer* cawk_Buffer_dim(Buffer buf, char cc);
109Buffer join_Buffer_dim(Buffer* dim, const char* deli);
110
111Buffer* decompline_Buffer_dim(Buffer buf, int mode);
112
113void del_Buffer_dim(Buffer** buf);
114
116// tList and Buffer
118tList* get_tList_seq_data_Buffer(Buffer buf, int* ptr);
119
121// Extend tList
122int set_item_tList(tList* list, char* key, int no, char deli, int nm, char* value);
123int replace_item_tList(tList* list, char* key, int no, char deli, int nm, char* srcval, char* value);
124int set_item_tList_node(tList* list, char deli, int nm, char* value);
125int replace_item_tList_node(tList* list, char deli, int nm, char* srcval, char* value);
126
128// File, Directory
129tList* get_dir_files(const char* dirn);
130tList* get_dir_files_rcsv(const char* dirn);
131
132void rm_dir_rcsv(const char* dirn);
133
135void change_file_extension_Buffer(Buffer* path, const char* ext);
136
138void canonical_filename_Buffer(Buffer* fname, int no_dir);
139
141// Resource (file) List
142tList* _add_key_val_list(tList* pp, tList* list, const char* key, const char* val, int mode);
143tList* add_resource_list(const char* path, int keylen, tList* list, tList* extn, int mode);
144char* get_resource_path(const char* name, tList* lp);
145
146
147#endif // __JBXL_EXTEND_TOOLS_H_
148
ネットワーク用ライブラリヘッダ for IPv4/IPv6
Tiny List 構造ライブラリヘッダ
#define mstream
バイト型 メッセージストリーム
Definition tools.h:167
Buffer decode_runlength(unsigned char *buf, int len, int sz)
0の連長圧縮された bufから szバイトの通常のデータを取り出す.
Definition xtools.cpp:1149
Buffer comp_hostport(char *ipaddr, unsigned short port)
ホスト名とポート番号から,"ホスト名:ポート番号" の文字列を生成する.
Definition xtools.cpp: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.cpp:1740
Buffer comp_url(char *protocol, char *host, unsigned short port, char *dir)
"プロトコル://ホスト名:ポート番号/ディレクトリ名" の文字列を生成する.
Definition xtools.cpp:757
Buffer * get_Buffer_ringBuffer(ringBuffer *rb, int sz)
リングバッファ rb から szバイトのデータを取り出し,Buffer型データに格納する.要 del_Buffer()
Definition xtools.cpp:1290
int save_tagged_Buffer(Buffer buf, FILE *fp, unsigned int mode, int prfm)
Bufferを指定された形式に従ってタグ付きでファイルに保存する.
Definition xtools.cpp:956
tList * get_tList_line_Buffer(Buffer buf, int n)
buf から n行目を取り出して,' ' で分解してリストに格納して返す.
Definition xtools.cpp:1603
int tcp_send_sBuffer(int sock, Buffer *buf)
TCP経由で文字列データを送信する.
Definition xtools.cpp:524
int tcp_recv_mstream_Buffer(int sock, Buffer *buf, mstream *sb, int tm)
TCP経由でメッセージを受信する.バッファリングあり.
Definition xtools.cpp:592
int udp_send_sBuffer(int sock, Buffer *buf, struct addrinfo *sv)
UDP経由で文字列データを送る.
Definition xtools.cpp:499
void canonical_filename_Buffer(Buffer *fname, int no_dir)
fname の問題になりそうな ASCII文字を '_' に変換する.
Definition xtools.cpp:2057
Buffer encode_runlength(unsigned char *buf, int len)
bufの szバイトを 0で連長圧縮する
Definition xtools.cpp:1198
int tcp_send_Buffer(int sock, Buffer *buf)
TCP経由でデータを送信する.
Definition xtools.cpp:305
int tcp_recv_Buffer(int sock, Buffer *buf)
TCP経由でデータを受信する.バッファリングなし.
Definition xtools.cpp:276
int tcp_recv_Buffer_tosize_wait(int sock, Buffer *b, Buffer *m, int sz, int tm)
TCP経由でデータを size バイトまで受信する.待ち時間を指定できる.
Definition xtools.cpp:453
int tcp_recv_Buffer_wait(int sock, Buffer *buf, int tm)
TCP経由でデータを受信する.待ち時間(タイムアウト)を指定できる.
Definition xtools.cpp:370
void rm_dir_rcsv(const char *dirn)
指定されたディレクトリを再帰的に削除する.
Definition xtools.cpp:1923
int replace_item_tList_node(tList *list, char deli, int nm, char *srcval, char *value)
deliを区切りにした nm番目の項目(文字列)の srcval部分を valueで置き換える.
Definition xtools.cpp:1772
struct sockaddr_in get_sockaddr_in_Buffer(Buffer buf)
FQDN:port または IPaddress:port の形式の Buffer変数から ソケット情報を得る.IPv4専用
Definition xtools.cpp:156
tList * get_dir_files_rcsv(const char *dirn)
指定されたディレクトリにあるファイル名の一覧を再帰的に取得.
Definition xtools.cpp:1904
tList * get_dir_files(const char *dirn)
指定されたディレクトリにあるファイル名の一覧を取得.
Definition xtools.cpp:1818
int put_Buffer_ringBuffer(ringBuffer *rb, Buffer *buf)
リングバッファ rb へ Buffer データを vldszバイト格納する.
Definition xtools.cpp:1249
tList * _add_key_val_list(tList *pp, tList *list, const char *key, const char *val, int mode)
Definition xtools.cpp:2099
Buffer relative_path_Buffer(Buffer path_a, Buffer path_b)
path_a から path_b への相対パスを返す.
Definition xtools.cpp:1995
int udp_send_Buffer_sockaddr_in(int sock, Buffer *buf, struct sockaddr_in *sv)
sendto() をラッピングした関数.UDP経由でデータを送る.IPv4専用.
Definition xtools.cpp:72
Buffer * cawk_Buffer_dim(Buffer buf, char cc)
文字列を cawkで分解して配列を作る
Definition xtools.cpp:1453
int tcp_recv_Buffer_tosize(int sock, Buffer *b, Buffer *m, int sz)
TCP経由でデータを size バイトまで受信する.バッファリングなし.
Definition xtools.cpp:400
void change_file_extension_Buffer(Buffer *path, const char *ext)
ファイルの拡張子を extにする.ファイルに拡張子が無い場合は extを付加する
Definition xtools.cpp:1960
int udp_recv_Buffer_sockaddr_in(int sock, Buffer *buf, struct sockaddr_in *sv)
recvform()をラッピングした関数.UDPデータを受信する.IPv4専用.
Definition xtools.cpp:38
void add_form_urlenc(Buffer *buf, const char *key, const char *val)
既存の文字に &key=val (valはURL Encodeされる) を追加する.
Definition xtools.cpp:904
char * get_resource_path(const char *name, tList *lp)
リソースの名前から,ファイルのパスを得る.戻り値は free() してはいけない.
Definition xtools.cpp:2176
void del_Buffer_dim(Buffer **buf)
配列を削除する.
Definition xtools.cpp:1567
Buffer * get_Buffer_dim_tList(tList *lp)
リストを分解してキー部(key)の配列を造る
Definition xtools.cpp:1330
int udp_recv_Buffer_wait_sockaddr_in(int sock, Buffer *buf, struct sockaddr_in *sv_addr, int tm)
UDP経由でデータを受信する.IPv4専用.
Definition xtools.cpp:130
int udp_recv_Buffer(int sock, Buffer *buf, struct addrinfo *sv)
recvform()をラッピングした関数.UDPデータを受信する.
Definition xtools.cpp:212
Buffer * awk_Buffer_dim(Buffer buf, char cc)
文字列を awkで分解して配列を作る
Definition xtools.cpp:1426
Buffer read_tagged_Buffer(FILE *fp, unsigned int *mode)
save_tagged_Buffer() で保存したファイルから,Buffer をタグに従って読み込む.
Definition xtools.cpp:1013
Buffer fgets_mstream_Buffer(Buffer buf, mstream *sb)
メッセージ buf.buf はメッセージストリームに一旦バッファリングされ,この関数により一行ずつ読み出される.
Definition xtools.cpp:1080
Buffer make_form_urlenc(const char *key, const char *val)
key=val (valはURL Encodeされる)の文字を作成する.
Definition xtools.cpp:884
tList * get_tList_seq_data_Buffer(Buffer buf, int *ptr)
buf から行データをシーケンシャルに取り出して,それぞれを ' ' で分解してリストに格納して返す.
Definition xtools.cpp:1628
Buffer * decompline_Buffer_dim(Buffer buf, int mode)
データを行単位に分解する.改行は \r\n
Definition xtools.cpp:1479
Buffer join_Buffer_dim(Buffer *dim, const char *deli)
配列の要素を dliを間に入れて繋げる
Definition xtools.cpp:1541
tList * add_resource_list(const char *path, int keylen, tList *list, tList *extn, int mode)
ディレクトリ pathを検索して,リソースリストにファイルを追加し,リストの先頭を返す.
Definition xtools.cpp:2133
int udp_recv_Buffer_wait(int sock, Buffer *buf, struct addrinfo *sv_addr, int tm)
UDP経由でデータを受信する.待ち時間(タイムアウト)を指定できる.
Definition xtools.cpp:337
int decomp_url(Buffer url, Buffer *srvurl, Buffer *protocol, Buffer *srvfqdn, unsigned short *sport, Buffer *srvdir)
URLを分解する.
Definition xtools.cpp:807
void del_file_extension_Buffer(Buffer *path)
ファイルの拡張子を削除する.
Definition xtools.cpp:1941
int set_item_tList_node(tList *list, char deli, int nm, char *value)
deliを区切りにした nm番目の項目(文字列)に value を設定する
Definition xtools.cpp:1697
int decomp_hostport(Buffer buf, Buffer *ipaddr, unsigned short *port)
"ホスト名:ポート番号" 形式の文字列から,ホスト名とポート番号を分離する.
Definition xtools.cpp:720
int get_runlength_byte(unsigned char *buf, int len, int pos)
圧縮されていない状態で pos(Byte)の位置が,0の連長圧縮されているデータではどの位置に来るかを計算する
Definition xtools.cpp:1116
int udp_send_Buffer(int sock, Buffer *buf, struct addrinfo *sv)
sendto() をラッピングした関数.UDP経由でデータを送る.
Definition xtools.cpp:248
int udp_send_sBuffer_sockaddr_in(int sock, Buffer *buf, struct sockaddr_in *sv)
DP経由で文字列データを送る.IPv4専用
Definition xtools.cpp:99
int tcp_send_sBufferln(int sock, Buffer *buf)
TCPメッセージ(文字列)に改行(0x0d, 0x0a)を付け加えて送信する.
Definition xtools.cpp:546
int tcp_recv_lines_Buffer(int sock, Buffer *buf, int tm)
TCP経由でメッセージを複数行受信する.簡易バッファリングあり.
Definition xtools.cpp: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.cpp:1668
Buffer * get_Buffer_dim_tList_value(tList *lp)
リストを分解してバリュー部(val)の配列を造る
Definition xtools.cpp:1377