From 0483dd60ded1239d8a3ab46598e164416f7668b8 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Sun, 1 May 2005 10:00:14 +0000 Subject: r6550: Move function make_dir_struct from util to dir.c Jeremy. (This used to be commit 5b86e3dcdf31dec61449d2faede61d24c3a8d79f) --- source3/smbd/dir.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'source3/smbd/dir.c') diff --git a/source3/smbd/dir.c b/source3/smbd/dir.c index 3c93c188ff..95a5903c14 100644 --- a/source3/smbd/dir.c +++ b/source3/smbd/dir.c @@ -63,6 +63,40 @@ static int dirhandles_open = 0; #define INVALID_DPTR_KEY (-3) +/**************************************************************************** + Make a dir struct. +****************************************************************************/ + +void make_dir_struct(char *buf, const char *mask, const char *fname,SMB_OFF_T size,int mode,time_t date, BOOL uc) +{ + char *p; + pstring mask2; + + pstrcpy(mask2,mask); + + if ((mode & aDIR) != 0) + size = 0; + + memset(buf+1,' ',11); + if ((p = strchr_m(mask2,'.')) != NULL) { + *p = 0; + push_ascii(buf+1,mask2,8, 0); + push_ascii(buf+9,p+1,3, 0); + *p = '.'; + } else + push_ascii(buf+1,mask2,11, 0); + + memset(buf+21,'\0',DIR_STRUCT_SIZE-21); + SCVAL(buf,21,mode); + put_dos_date(buf,22,date); + SSVAL(buf,26,size & 0xFFFF); + SSVAL(buf,28,(size >> 16)&0xFFFF); + /* We only uppercase if FLAGS2_LONG_PATH_COMPONENTS is zero in the input buf. + Strange, but verified on W2K3. Needed for OS/2. JRA. */ + push_ascii(buf+30,fname,12, uc ? STR_UPPER : 0); + DEBUG(8,("put name [%s] from [%s] into dir struct\n",buf+30, fname)); +} + /**************************************************************************** Initialise the dir bitmap. ****************************************************************************/ -- cgit