Filesys-SmbClient
view release on metacpan or search on metacpan
SmbClient.xs view on Meta::CPAN
SMBCFILE *
_opendir(context, fname)
SMBCCTX *context
char *fname
CODE:
/*
* Open directory fname
*
*/
RETVAL = context->opendir(context, fname);
#ifdef VERBOSE
fprintf(stderr, "! Filesys::SmbClient : _opendir: %d\n", RETVAL);
#endif
if (RETVAL < 0) {
RETVAL = 0;
#ifdef VERBOSE
fprintf(stderr, "*** Error Filesys::SmbClient : "
"Error opendir %s : %s\n", fname, strerror(errno));
#endif
}
OUTPUT:
RETVAL
int
_closedir(context, fd)
SMBCCTX *context
SMBCFILE *fd
CODE:
/*
* Close file descriptor for directory fd
*
*/
RETVAL = context->closedir(context, fd);
#ifdef VERBOSE
if (RETVAL < 0) {
fprintf(stderr, "*** Error Filesys::SmbClient : "
"Closedir : %s\n", strerror(errno)); }
#endif
OUTPUT:
RETVAL
void
_readdir(context, fd)
SMBCCTX *context
SMBCFILE *fd
PREINIT:
/*
* Read file descriptor for directory fd and return file type, name and comment
*
*/
struct smbc_dirent * dirp;
PPCODE:
#ifdef VERBOSE
fprintf(stderr, "! Filesys::SmbClient : _readdir: %d\n", fd);
#endif
// Fix for rt#12221 : macro "readdir" passed 2 arguments, but takes just 1
// Seems only work on linux, not solaris
// Already defined in usr/lib/perl/5.8/CORE/reentr.inc:1322:# define readdir(a)
#if !(defined (__SVR4) && defined (__sun)) && !defined(_AIX)
#undef readdir
#endif
dirp = (struct smbc_dirent *)context->readdir(context, fd);
if (dirp) {
XPUSHs(sv_2mortal(newSVnv(dirp->smbc_type)));
/*
* original code here produces strings which include NULL as last char
* with samba 3. Reported by dpavlin at rot13.org
*
XPUSHs(sv_2mortal((SV*)newSVpv(dirp->name, dirp->namelen)));
XPUSHs(sv_2mortal((SV*)newSVpv(dirp->comment, dirp->commentlen)));
*/
XPUSHs(sv_2mortal((SV*)newSVpv(dirp->name, strlen(dirp->name))));
XPUSHs(sv_2mortal((SV*)newSVpv(dirp->comment, strlen(dirp->comment))));
}
void
_stat(context, fname)
SMBCCTX *context
char *fname
PREINIT:
/*
* _stat(fname) : Get information about a file or directory.
*
*/
int i;
struct stat buf;
PPCODE:
i = context->stat(context, fname, &buf);
if (i == 0) {
XPUSHs(sv_2mortal(newSVnv(buf.st_dev)));
XPUSHs(sv_2mortal(newSVnv(buf.st_ino)));
XPUSHs(sv_2mortal(newSVnv(buf.st_mode)));
XPUSHs(sv_2mortal(newSVnv(buf.st_nlink)));
XPUSHs(sv_2mortal(newSVnv(buf.st_uid)));
XPUSHs(sv_2mortal(newSVnv(buf.st_gid)));
XPUSHs(sv_2mortal(newSVnv(buf.st_rdev)));
XPUSHs(sv_2mortal(newSVnv(buf.st_size)));
XPUSHs(sv_2mortal(newSVnv(buf.st_blksize)));
XPUSHs(sv_2mortal(newSVnv(buf.st_blocks)));
XPUSHs(sv_2mortal(newSVnv(buf.st_atime)));
XPUSHs(sv_2mortal(newSVnv(buf.st_mtime)));
XPUSHs(sv_2mortal(newSVnv(buf.st_ctime)));
} else {
#ifdef VERBOSE
fprintf(stderr, "! Filesys::SmbClient : Stat: %s\n", strerror(errno));
#endif
XPUSHs(sv_2mortal(newSVnv(0)));
}
void
_fstat(context, fd)
SMBCCTX *context
SMBCFILE *fd
PREINIT:
/*
* Get information about a file or directory via a file descriptor.
*
*/
int i;
struct stat buf;
PPCODE:
i = context->fstat(context, fd, &buf);
if (i == 0) {
XPUSHs(sv_2mortal(newSVnv(buf.st_dev)));
XPUSHs(sv_2mortal(newSVnv(buf.st_ino)));
XPUSHs(sv_2mortal(newSVnv(buf.st_mode)));
XPUSHs(sv_2mortal(newSVnv(buf.st_nlink)));
XPUSHs(sv_2mortal(newSVnv(buf.st_uid)));
XPUSHs(sv_2mortal(newSVnv(buf.st_gid)));
XPUSHs(sv_2mortal(newSVnv(buf.st_rdev)));
XPUSHs(sv_2mortal(newSVnv(buf.st_size)));
XPUSHs(sv_2mortal(newSVnv(buf.st_blksize)));
XPUSHs(sv_2mortal(newSVnv(buf.st_blocks)));
XPUSHs(sv_2mortal(newSVnv(buf.st_atime)));
XPUSHs(sv_2mortal(newSVnv(buf.st_mtime)));
XPUSHs(sv_2mortal(newSVnv(buf.st_ctime)));
} else {
XPUSHs(sv_2mortal(newSVnv(errno)));
}
int
_rename(context, oname, nname)
SMBCCTX *context
char *oname
char *nname
CODE:
/*
* Rename old file oname in nname
*
*/
RETVAL = context->rename(context, oname, context, nname);
if (RETVAL < 0) {
RETVAL = 0;
#ifdef VERBOSE
fprintf(stderr, "*** Error Filesys::SmbClient : "
"Rename %s in %s : %s\n", oname, nname, strerror(errno));
#endif
} else {
RETVAL = 1;
}
OUTPUT:
RETVAL
SMBCFILE*
_open(context, fname, mode)
SMBCCTX *context
char *fname
int mode
PREINIT:
/*
* Open file fname with perm mode
*
*/
int flags;
int seek_end = 0;
CODE:
/* Mode >> */
( run in 0.890 second using v1.01-cache-2.11-cpan-71847e10f99 )