Samba Character Handling System

来源:互联网 发布:mastercam9.1编程全集 编辑:程序博客网 时间:2024/06/16 01:30

Samba 字符处理系统

1.  samba使用多字节字符串——unix字符串(unix strings)

unix字符串没有固定的字节长度,但是遵循以下原则:
    a. 除非是在终端,否则不能含有NULL;
    b. 兼容7位的C字符串(C strings),对于C中的常量字符和字符串,其每一位都要和unix字符(串)中的位完全等同;
    c. 大小写转换是,转换后的字符(串)不能占更多的位;
    d. 能够准确接收客户端传入的全部字符。
UTF-8和大多数多字节的亚洲语言都能够很好的兼容unix。UCS2是例外(含NULL)。
在smb.conf中定义unix charset。
在与客户端发送或接收数据的时候,为了兼容客户端的字符编码,需要使用pull_(接收) 和push_(发送)开头的函数在buffer中格式化数据。
lp_开头的函数,返回值全部是unix strings。

2.  相关宏定义(byteorder.h)

CVAL(buf,pos)将buf中pos处的字节以无符号字符返回PVAL(buf,pos)将buf中pos处的字节以无符号整型返回SCVAL(buf,pos,val)将buf中pos处的字节设置为valSVAL(buf,pos)将buf中pos处的字节以无符号小端整型(16bit,ushort)返回IVAL(buf,pos)将buf中pos处的字节以无符号小端整型(32bit)返回SVALS(buf,pos)将buf中pos处的字节以有符号小端整型(16bit)返回IVALS(buf,pos)将buf中pos处的字节以有符号小端整型(32bit)返回SSVAL(buf,pos,val)将buf中pos处的无符号小端整型(16bit)值设置为valSIVAL(buf,pos,val)将buf中pos处的无符号小端整型(32bit)值设置为valSSVALS(buf,pos,val)将buf中pos处的有符号小端整型(16bit)值设置为valSIVALS(buf,pos,val)将buf中pos处的有符号小端整型(32bit)值设置为valRSVAL(buf,pos)将buf中pos处的字节以无符号大端整型(16bit)返回RIVAL(buf,pos)将buf中pos处的字节以无符号大端整型(32bit)返回RSSVAL(buf,pos,val)将buf中pos处的无符号大端整型(16bit,ushort)值设置为valRSIVAL(buf,pos,val)将buf中pos处的无符号大端整型(32bit)值设置为val
原创粉丝点击