Samba Character Handling System

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处的字节设置为val
SVAL(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)值设置为val
SIVAL(buf,pos,val)将buf中pos处的无符号小端整型(32bit)值设置为val
SSVALS(buf,pos,val)将buf中pos处的有符号小端整型(16bit)值设置为val
SIVALS(buf,pos,val)将buf中pos处的有符号小端整型(32bit)值设置为val
RSVAL(buf,pos)将buf中pos处的字节以无符号大端整型(16bit)返回
RIVAL(buf,pos)将buf中pos处的字节以无符号大端整型(32bit)返回
RSSVAL(buf,pos,val)将buf中pos处的无符号大端整型(16bit,ushort)值设置为val
RSIVAL(buf,pos,val)将buf中pos处的无符号大端整型(32bit)值设置为val
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值