char *tab_depth(int depth);
char *sid_to_string(pstring sidstr_out, DOM_SID *sid);
BOOL string_to_sid(DOM_SID *sidout, char *sidstr);
-int str_checksum(char *s);
+int str_checksum(const char *s);
void zero_free(void *p, size_t size);
/*The following definitions come from libsmb/clientgen.c */
char **rparam, int *rprcnt,
char **rdata, int *rdrcnt);
BOOL cli_NetWkstaUserLogon(struct cli_state *cli,char *user, char *workstation);
-BOOL cli_RNetShareEnum(struct cli_state *cli, void (*fn)(const char *, uint32, char *));
+BOOL cli_RNetShareEnum(struct cli_state *cli, void (*fn)(const char *, uint32, const char *));
BOOL cli_NetServerEnum(struct cli_state *cli, char *workgroup, uint32 stype,
void (*fn)(char *, uint32, char *));
BOOL cli_session_setup(struct cli_state *cli,
*
* ****************************************************************************
*/
-int str_checksum(char *s)
+int str_checksum(const char *s)
{
int res = 0;
int c;
/****************************************************************************
call a NetShareEnum - try and browse available connections on a host
****************************************************************************/
-BOOL cli_RNetShareEnum(struct cli_state *cli, void (*fn)(const char *, uint32, char *))
+BOOL cli_RNetShareEnum(struct cli_state *cli, void (*fn)(const char *, uint32, const char *))
{
char *rparam = NULL;
char *rdata = NULL;
struct cli_state cli;
char *server_name;
char *share_name;
+ dev_t dev;
};
struct smbw_file {
return (fd >= SMBW_FD_OFFSET);
}
+/*****************************************************
+a crude inode number generator
+*******************************************************/
+ino_t smbw_inode(const char *name)
+{
+ return (ino_t)str_checksum(name);
+}
/*****************************************************
remove redundent stuff from a filename
srv->cli = c;
+ srv->dev = (dev_t)(str_checksum(server) ^ str_checksum(share));
+
srv->server_name = strdup(server);
if (!srv->server_name) {
errno = ENOMEM;
st->st_blocks = (size+511)/512;
st->st_uid = getuid();
st->st_gid = getgid();
+ st->st_ino = smbw_inode(fname);
}
bitmap_set(file_bmap, fd);
dir->fd = fd + SMBW_FD_OFFSET;
+ dir->srv = srv;
DEBUG(4,(" -> %d\n", dir->count));
smbw_setup_stat(st, "", dir->count*sizeof(struct dirent), aDIR);
+ st->st_dev = dir->srv->dev;
+
return 0;
}
st->st_atime = a_time;
st->st_ctime = c_time;
st->st_mtime = m_time;
+ st->st_dev = file->srv->dev;
DEBUG(4,("%s - OK\n", __FUNCTION__));
st->st_atime = time(NULL);
st->st_ctime = m_time;
st->st_mtime = m_time;
+ st->st_dev = srv->dev;
smbw_busy--;
return 0;
}
while (count>=sizeof(*dirp) && (dir->offset < dir->count)) {
- dirp->d_ino = dir->offset + 0x10000;
dirp->d_off = (dir->offset+1)*sizeof(*dirp);
dirp->d_reclen = sizeof(*dirp);
/* what's going on with the -1 here? maybe d_type
isn't really there? */
safe_strcpy(&dirp->d_name[-1], dir->list[dir->offset].name,
sizeof(dirp->d_name)-1);
+ dirp->d_ino = smbw_inode(dir->list[dir->offset].name);
dir->offset++;
count -= dirp->d_reclen;
if (dir->offset == dir->count) {