本文整理汇总了C++中smb_error函数的典型用法代码示例。如果您正苦于以下问题:C++ smb_error函数的具体用法?C++ smb_error怎么用?C++ smb_error使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了smb_error函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: smb_ctx_login
int
smb_ctx_login(struct smb_ctx *ctx)
{
struct smbioc_ossn *ssn = &ctx->ct_ssn;
struct smbioc_oshare *sh = &ctx->ct_sh;
int error;
if ((ctx->ct_flags & SMBCF_RESOLVED) == 0) {
smb_error("smb_ctx_resolve() should be called first", 0);
return EINVAL;
}
if (ctx->ct_fd != -1) {
close(ctx->ct_fd);
ctx->ct_fd = -1;
}
error = smb_ctx_gethandle(ctx);
if (error) {
smb_error("can't get handle to requester", 0);
return EINVAL;
}
if (ioctl(ctx->ct_fd, SMBIOC_OPENSESSION, ssn) == -1) {
error = errno;
smb_error("can't open session to server %s", error, ssn->ioc_srvname);
return error;
}
if (sh->ioc_share[0] == 0)
return 0;
if (ioctl(ctx->ct_fd, SMBIOC_OPENSHARE, sh) == -1) {
error = errno;
smb_error("can't connect to share //%s/%s", error,
ssn->ioc_srvname, sh->ioc_share);
return error;
}
return 0;
}
开发者ID:AhmadTux,项目名称:DragonFlyBSD,代码行数:35,代码来源:ctx.c
示例2: smb_ctx_setcharset
int
smb_ctx_setcharset(struct smb_ctx *ctx, const char *arg)
{
char *cp, *servercs, *localcs;
int cslen = sizeof(ctx->ct_ssn.ioc_localcs);
int scslen, lcslen, error;
cp = strchr(arg, ':');
lcslen = cp ? (cp - arg) : 0;
if (lcslen == 0 || lcslen >= cslen) {
smb_error("invalid local charset specification (%s)", 0, arg);
return EINVAL;
}
scslen = (size_t)strlen(++cp);
if (scslen == 0 || scslen >= cslen) {
smb_error("invalid server charset specification (%s)", 0, arg);
return EINVAL;
}
localcs = memcpy(ctx->ct_ssn.ioc_localcs, arg, lcslen);
localcs[lcslen] = 0;
servercs = strcpy(ctx->ct_ssn.ioc_servercs, cp);
error = nls_setrecode(localcs, servercs);
if (error == 0)
return 0;
smb_error("can't initialize iconv support (%s:%s)",
error, localcs, servercs);
localcs[0] = 0;
servercs[0] = 0;
return error;
}
开发者ID:AhmadTux,项目名称:DragonFlyBSD,代码行数:30,代码来源:ctx.c
示例3: smb_ctx_lookup
int
smb_ctx_lookup(struct smb_ctx *ctx, int level, int flags)
{
struct smbioc_lookup rq;
int error;
if ((ctx->ct_flags & SMBCF_RESOLVED) == 0) {
smb_error("smb_ctx_lookup() data is not resolved", 0);
return EINVAL;
}
if (ctx->ct_fd != -1) {
close(ctx->ct_fd);
ctx->ct_fd = -1;
}
error = smb_ctx_gethandle(ctx);
if (error) {
smb_error("can't get handle to requester (no /dev/"NSMB_NAME"* device)", 0);
return EINVAL;
}
bzero(&rq, sizeof(rq));
bcopy(&ctx->ct_ssn, &rq.ioc_ssn, sizeof(struct smbioc_ossn));
bcopy(&ctx->ct_sh, &rq.ioc_sh, sizeof(struct smbioc_oshare));
rq.ioc_flags = flags;
rq.ioc_level = level;
if (ioctl(ctx->ct_fd, SMBIOC_LOOKUP, &rq) == -1) {
error = errno;
if (flags & SMBLK_CREATE)
smb_error("unable to open connection", error);
return error;
}
return 0;
}
开发者ID:AhmadTux,项目名称:DragonFlyBSD,代码行数:32,代码来源:ctx.c
示例4: smb_parse_owner
static int
smb_parse_owner(char *pair, uid_t *uid, gid_t *gid)
{
struct group *gr;
struct passwd *pw;
char *cp;
cp = strchr(pair, ':');
if (cp) {
*cp++ = '\0';
if (*cp) {
gr = getgrnam(cp);
if (gr) {
*gid = gr->gr_gid;
} else
smb_error("Invalid group name %s, ignored",
0, cp);
}
}
if (*pair) {
pw = getpwnam(pair);
if (pw) {
*uid = pw->pw_uid;
} else
smb_error("Invalid user name %s, ignored", 0, pair);
}
endpwent();
return 0;
}
开发者ID:AhmadTux,项目名称:DragonFlyBSD,代码行数:29,代码来源:ctx.c
示例5: nb_ctx_resolve
int
nb_ctx_resolve(struct nb_ctx *ctx)
{
struct sockaddr *sap;
int error;
ctx->nb_flags &= ~NBCF_RESOLVED;
if (ctx->nb_nsname == NULL) {
ctx->nb_ns.sin_addr.s_addr = htonl(INADDR_BROADCAST);
} else {
error = nb_resolvehost_in(ctx->nb_nsname, &sap);
if (error) {
smb_error("can't resolve %s", error, ctx->nb_nsname);
return error;
}
if (sap->sa_family != AF_INET) {
smb_error("unsupported address family %d", 0,
sap->sa_family);
free(sap);
return EINVAL;
}
bcopy(sap, &ctx->nb_ns, sizeof(ctx->nb_ns));
free(sap);
}
ctx->nb_ns.sin_port = htons(137);
ctx->nb_ns.sin_family = AF_INET;
ctx->nb_ns.sin_len = sizeof(ctx->nb_ns);
ctx->nb_flags |= NBCF_RESOLVED;
return 0;
}
开发者ID:ajinkya93,项目名称:netbsd-src,代码行数:31,代码来源:nb.c
示例6: smb_ctx_setserver
int
smb_ctx_setserver(struct smb_ctx *ctx, const char *name)
{
char *d;
/*
* If the name contains dot, it's likely a IP address
* or a name. Update srvaddr in that case, and use
* first part of the name (up to the dot) as NetBIOS name.
*/
if ((d = strchr(name, '.'))) {
static char nm[sizeof(ctx->ct_ssn.ioc_srvname)];
int error;
error = smb_ctx_setsrvaddr(ctx, name);
if (error)
return (error);
/* cut name to MAXSRVNAMELEN */
if (strlen(name) >= sizeof(ctx->ct_ssn.ioc_srvname)) {
snprintf(nm, sizeof(nm), "%.*s",
(int)(sizeof(ctx->ct_ssn.ioc_srvname) - 1), name);
name = nm;
}
}
if (strlen(name) >= sizeof(ctx->ct_ssn.ioc_srvname)) {
smb_error("server name '%s' too long", 0, name);
return ENAMETOOLONG;
}
nls_str_upper(ctx->ct_ssn.ioc_srvname, name);
return 0;
}
开发者ID:execunix,项目名称:vinos,代码行数:33,代码来源:ctx.c
示例7: smb_rq_wend
void
smb_rq_wend(struct smb_rq *rqp)
{
if (rqp->rq_rq.mb_count & 1)
smb_error("smbrq_wend: odd word count\n", 0);
rqp->rq_wcount = rqp->rq_rq.mb_count / 2;
rqp->rq_rq.mb_count = 0;
}
开发者ID:coyizumi,项目名称:cs111,代码行数:8,代码来源:rq.c
示例8: print_file
static int
print_file(smb_ctx_t *ctx, char *title, int file)
{
off_t offset;
int rcnt, wcnt;
int setup_len = 0; /* No printer setup data */
int mode = MODE_GRAPHICS; /* treat as raw data */
int error = 0;
int pfd = -1;
pfd = smb_open_printer(ctx, title, setup_len, mode);
if (pfd < 0) {
error = errno;
smb_error("could not open print job", error);
return (error);
}
offset = 0;
for (;;) {
rcnt = read(file, databuf, sizeof (databuf));
if (rcnt < 0) {
error = errno;
smb_error("error reading input file\n", error);
break;
}
if (rcnt == 0)
break;
wcnt = smb_fh_write(pfd, offset, rcnt, databuf);
if (wcnt < 0) {
error = errno;
smb_error("error writing spool file\n", error);
break;
}
if (wcnt != rcnt) {
smb_error("incomplete write to spool file\n", 0);
error = EIO;
break;
}
offset += wcnt;
}
(void) smb_fh_close(pfd);
return (error);
}
开发者ID:AlainODea,项目名称:illumos-gate,代码行数:45,代码来源:print.c
示例9: convert_wincs_to_utf8
/*
* XXX - NLS, or CF? We should probably use the same routine for all
* conversions.
*/
char *
convert_wincs_to_utf8(const char *windows_string)
{
#ifdef NOTPORTED
CFStringRef s;
CFIndex maxlen;
char *result;
s = CFStringCreateWithCString(NULL, windows_string,
get_windows_encoding_equivalent());
if (s == NULL) {
smb_error("CFStringCreateWithCString for Windows code page failed on \"%s\" ", -1,
windows_string);
/* kCFStringEncodingMacRoman should always succeed */
s = CFStringCreateWithCString(NULL, windows_string,
kCFStringEncodingMacRoman);
if (s == NULL) {
smb_error("CFStringCreateWithCString for Windows code page failed on \"%s\" with kCFStringEncodingMacRoman - skipping",
-1, windows_string);
return NULL;
}
}
maxlen = CFStringGetMaximumSizeForEncoding(CFStringGetLength(s),
kCFStringEncodingUTF8) + 1;
result = malloc(maxlen);
if (result == NULL) {
smb_error("Couldn't allocate buffer for UTF-8 string for \"%s\" - skipping", -1,
windows_string);
CFRelease(s);
return NULL;
}
if (!CFStringGetCString(s, result, maxlen, kCFStringEncodingUTF8)) {
smb_error("CFStringGetCString for UTF-8 failed on \"%s\" - skipping",
-1, windows_string);
CFRelease(s);
return NULL;
}
CFRelease(s);
return result;
#else /* NOTPORTED */
return (strdup((char*)windows_string));
#endif /* NOTPORTED */
}
开发者ID:apprisi,项目名称:illumos-gate,代码行数:49,代码来源:charsets.c
示例10: smb_ctx_setserver
int
smb_ctx_setserver(struct smb_ctx *ctx, const char *name)
{
if (strlen(name) >= SMB_MAXSRVNAMELEN) {
smb_error("server name '%s' too long", 0, name);
return ENAMETOOLONG;
}
nls_str_upper(ctx->ct_ssn.ioc_srvname, name);
return 0;
}
开发者ID:AhmadTux,项目名称:DragonFlyBSD,代码行数:10,代码来源:ctx.c
示例11: smb_ctx_setworkgroup
int
smb_ctx_setworkgroup(struct smb_ctx *ctx, const char *name)
{
if (strlen(name) >= SMB_MAXUSERNAMELEN) {
smb_error("workgroup name '%s' too long", 0, name);
return ENAMETOOLONG;
}
nls_str_upper(ctx->ct_ssn.ioc_workgroup, name);
return 0;
}
开发者ID:AhmadTux,项目名称:DragonFlyBSD,代码行数:10,代码来源:ctx.c
示例12: convert_ucs2xx_to_utf8
static char *
convert_ucs2xx_to_utf8(iconv_t cd, const uint16_t *us)
{
char *obuf, *optr;
const char *iptr;
size_t ileft, obsize, oleft, ret;
if (cd == (iconv_t)-1) {
smb_error(dgettext(TEXT_DOMAIN,
"iconv_open(UTF-8/UCS-2)"), -1);
return (NULL);
}
iptr = (const char *)us;
ileft = unicode_strlen(us);
ileft *= 2; /* now bytes */
/* Worst-case output size is 2x input size. */
oleft = ileft * 2;
obsize = oleft + 2; /* room for null */
obuf = malloc(obsize);
if (!obuf)
return (NULL);
optr = obuf;
ret = iconv(cd, &iptr, &ileft, &optr, &oleft);
*optr = '\0';
if (ret == (size_t)-1) {
smb_error(dgettext(TEXT_DOMAIN,
"iconv(%s) failed"), errno, obuf);
}
if (ileft) {
smb_error(dgettext(TEXT_DOMAIN,
"iconv(%s) failed"), -1, obuf);
/*
* XXX: What's better? return NULL?
* The truncated string? << for now
*/
}
return (obuf);
}
开发者ID:apprisi,项目名称:illumos-gate,代码行数:42,代码来源:utf_str.c
示例13: convert_utf8_to_ucs2xx
static uint16_t *
convert_utf8_to_ucs2xx(iconv_t cd, const char *utf8_string)
{
uint16_t *obuf, *optr;
const char *iptr;
size_t ileft, obsize, oleft, ret;
if (cd == (iconv_t)-1) {
smb_error(dgettext(TEXT_DOMAIN,
"iconv_open(UCS-2/UTF-8)"), -1);
return (NULL);
}
iptr = utf8_string;
ileft = strlen(iptr);
/* Worst-case output size is 2x input size. */
oleft = ileft * 2;
obsize = oleft + 2; /* room for null */
obuf = malloc(obsize);
if (!obuf)
return (NULL);
optr = obuf;
ret = iconv(cd, &iptr, &ileft, (char **)&optr, &oleft);
*optr = '\0';
if (ret == (size_t)-1) {
smb_error(dgettext(TEXT_DOMAIN,
"iconv(%s) failed"), errno, utf8_string);
}
if (ileft) {
smb_error(dgettext(TEXT_DOMAIN,
"iconv(%s) failed"), -1, utf8_string);
/*
* XXX: What's better? return NULL?
* The truncated string? << for now
*/
}
return (obuf);
}
开发者ID:apprisi,项目名称:illumos-gate,代码行数:41,代码来源:utf_str.c
示例14: smb_addiconvtbl
static int
smb_addiconvtbl(const char *to, const char *from, const u_char *tbl)
{
int error;
error = kiconv_add_xlat_table(to, from, tbl);
if (error && error != EEXIST) {
smb_error("can not setup kernel iconv table (%s:%s)", error,
from, to);
return error;
}
return 0;
}
开发者ID:AhmadTux,项目名称:DragonFlyBSD,代码行数:13,代码来源:ctx.c
示例15: smb_ctx_setshare
int
smb_ctx_setshare(struct smb_ctx *ctx, const char *share, int stype)
{
if (strlen(share) >= SMB_MAXSHARENAMELEN) {
smb_error("share name '%s' too long", 0, share);
return ENAMETOOLONG;
}
nls_str_upper(ctx->ct_sh.ioc_share, share);
if (share[0] != 0)
ctx->ct_parsedlevel = SMBL_SHARE;
ctx->ct_sh.ioc_stype = stype;
return 0;
}
开发者ID:AhmadTux,项目名称:DragonFlyBSD,代码行数:13,代码来源:ctx.c
示例16: smb_ctx_readrcsection
/*
* level values:
* 0 - default
* 1 - server
* 2 - server:user
* 3 - server:user:share
*/
static int
smb_ctx_readrcsection(struct smb_ctx *ctx, const char *sname, int level)
{
char *p;
int error;
if (level >= 0) {
rc_getstringptr(smb_rc, sname, "charsets", &p);
if (p) {
error = smb_ctx_setcharset(ctx, p);
if (error)
smb_error("charset specification in the section '%s' ignored", error, sname);
}
}
if (level <= 1) {
rc_getint(smb_rc, sname, "timeout", &ctx->ct_ssn.ioc_timeout);
rc_getint(smb_rc, sname, "retry_count", &ctx->ct_ssn.ioc_retrycount);
}
if (level == 1) {
rc_getstringptr(smb_rc, sname, "addr", &p);
if (p) {
error = smb_ctx_setsrvaddr(ctx, p);
if (error) {
smb_error("invalid address specified in the section %s", 0, sname);
return error;
}
}
}
if (level >= 2) {
rc_getstringptr(smb_rc, sname, "password", &p);
if (p)
smb_ctx_setpassword(ctx, p);
}
rc_getstringptr(smb_rc, sname, "workgroup", &p);
if (p)
smb_ctx_setworkgroup(ctx, p);
return 0;
}
开发者ID:AhmadTux,项目名称:DragonFlyBSD,代码行数:45,代码来源:ctx.c
示例17: smb_ctx_setpassword
int
smb_ctx_setpassword(struct smb_ctx *ctx, const char *passwd)
{
if (passwd == NULL)
return EINVAL;
if (strlen(passwd) >= SMB_MAXPASSWORDLEN) {
smb_error("password too long", 0);
return ENAMETOOLONG;
}
if (strncmp(passwd, "$$1", 3) == 0)
smb_simpledecrypt(ctx->ct_ssn.ioc_password, passwd);
else
strcpy(ctx->ct_ssn.ioc_password, passwd);
strcpy(ctx->ct_sh.ioc_password, ctx->ct_ssn.ioc_password);
return 0;
}
开发者ID:AhmadTux,项目名称:DragonFlyBSD,代码行数:16,代码来源:ctx.c
示例18: nb_ctx_setscope
int
nb_ctx_setscope(struct nb_ctx *ctx, const char *scope)
{
size_t slen = strlen(scope);
if (slen >= 128) {
smb_error("scope '%s' is too long", 0, scope);
return ENAMETOOLONG;
}
if (ctx->nb_scope)
free(ctx->nb_scope);
ctx->nb_scope = malloc(slen + 1);
if (ctx->nb_scope == NULL)
return ENOMEM;
nls_str_upper(ctx->nb_scope, scope);
return 0;
}
开发者ID:ajinkya93,项目名称:netbsd-src,代码行数:17,代码来源:nb.c
示例19: enum_shares
int
enum_shares(smb_ctx_t *ctx)
{
struct share_info *share_info;
int error, entries, total;
/*
* XXX: Later, try RPC first,
* then fall back to RAP...
*/
error = smb_netshareenum(ctx, &entries, &total, &share_info);
if (error) {
smb_error(gettext("unable to list resources"), error);
return (error);
}
print_shares(entries, total, share_info);
return (0);
}
开发者ID:CoryXie,项目名称:opensolaris,代码行数:18,代码来源:view.c
示例20: smb_directory
static void
smb_directory(int dir, struct string *prefix, struct uri *uri)
{
struct string buf;
struct directory_entry *entries;
if (!is_in_state(init_directory_listing(&buf, uri), S_OK)) {
smb_error(connection_state(S_OUT_OF_MEM));
}
fputs("text/html", header_out);
fclose(header_out);
entries = get_smb_directory_entries(dir, prefix);
add_smb_dir_entries(entries, NULL, &buf);
add_to_string(&buf, "</pre><hr/></body></html>\n");
fputs(buf.source, data_out);
done_string(&buf);
exit(0);
}
开发者ID:Efreak,项目名称:elinks,代码行数:21,代码来源:smb2.c
注:本文中的smb_error函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论