Author: jelmer Date: 2006-05-04 13:04:22 +0000 (Thu, 04 May 2006) New Revision: 15432
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=15432 Log: Make some functions non-static and import some utility functions from Samba 4 Modified: trunk/source/lib/charcnv.c trunk/source/lib/data_blob.c trunk/source/lib/substitute.c trunk/source/lib/time.c trunk/source/lib/util.c trunk/source/lib/util_str.c trunk/source/libsmb/trusts_util.c trunk/source/torture/rpctorture.c trunk/source/web/swat.c Changeset: Modified: trunk/source/lib/charcnv.c =================================================================== --- trunk/source/lib/charcnv.c 2006-05-04 12:57:27 UTC (rev 15431) +++ trunk/source/lib/charcnv.c 2006-05-04 13:04:22 UTC (rev 15432) @@ -702,7 +702,7 @@ * * @returns Size in bytes of the converted string; or -1 in case of error. **/ -static size_t convert_string_talloc(TALLOC_CTX *ctx, charset_t from, charset_t to, +size_t convert_string_talloc(TALLOC_CTX *ctx, charset_t from, charset_t to, void const *src, size_t srclen, void **dest, BOOL allow_bad_conv) { size_t dest_len; Modified: trunk/source/lib/data_blob.c =================================================================== --- trunk/source/lib/data_blob.c 2006-05-04 12:57:27 UTC (rev 15431) +++ trunk/source/lib/data_blob.c 2006-05-04 13:04:22 UTC (rev 15432) @@ -102,7 +102,7 @@ Clear a DATA_BLOB's contents *******************************************************************/ -static void data_blob_clear(DATA_BLOB *d) +void data_blob_clear(DATA_BLOB *d) { if (d->data) { memset(d->data, 0, d->length); Modified: trunk/source/lib/substitute.c =================================================================== --- trunk/source/lib/substitute.c 2006-05-04 12:57:27 UTC (rev 15431) +++ trunk/source/lib/substitute.c 2006-05-04 13:04:22 UTC (rev 15432) @@ -522,7 +522,7 @@ a_string = realloc_string_sub(a_string, "%R", remote_proto); break; case 'T' : - a_string = realloc_string_sub(a_string, "%T", timestring(False)); + a_string = realloc_string_sub(a_string, "%T", current_timestring(False)); break; case 'a' : a_string = realloc_string_sub(a_string, "%a", remote_arch); Modified: trunk/source/lib/time.c =================================================================== --- trunk/source/lib/time.c 2006-05-04 12:57:27 UTC (rev 15431) +++ trunk/source/lib/time.c 2006-05-04 13:04:22 UTC (rev 15432) @@ -639,7 +639,7 @@ Return the date and time as a string ****************************************************************************/ -char *timestring(BOOL hires) +char *current_timestring(BOOL hires) { static fstring TimeBuf; struct timeval tp; @@ -1057,3 +1057,49 @@ return ret; } #endif + + +/** + Return the date and time as a string +**/ +char *timestring(TALLOC_CTX *mem_ctx, time_t t) +{ + char *TimeBuf; + char tempTime[80]; + struct tm *tm; + + tm = localtime(&t); + if (!tm) { + return talloc_asprintf(mem_ctx, + "%ld seconds since the Epoch", + (long)t); + } + +#ifdef HAVE_STRFTIME + /* some versions of gcc complain about using %c. This is a bug + in the gcc warning, not a bug in this code. See a recent + strftime() manual page for details. + */ + strftime(tempTime,sizeof(tempTime)-1,"%c %Z",tm); + TimeBuf = talloc_strdup(mem_ctx, tempTime); +#else + TimeBuf = talloc_strdup(mem_ctx, asctime(tm)); +#endif + + return TimeBuf; +} + + +/** + return a talloced string representing a NTTIME for human consumption +*/ +const char *nt_time_string(TALLOC_CTX *mem_ctx, NTTIME nt) +{ + time_t t; + if (nt.low == 0 && nt.high == 0) { + return "NTTIME(0)"; + } + t = nt_time_to_unix(&nt); + return timestring(mem_ctx, t); +} + Modified: trunk/source/lib/util.c =================================================================== --- trunk/source/lib/util.c 2006-05-04 12:57:27 UTC (rev 15431) +++ trunk/source/lib/util.c 2006-05-04 13:04:22 UTC (rev 15432) @@ -447,26 +447,6 @@ } /******************************************************************* - Return a string representing an attribute for a file. -********************************************************************/ - -char *attrib_string(uint16 mode) -{ - static fstring attrstr; - - attrstr[0] = 0; - - if (mode & aVOLID) fstrcat(attrstr,"V"); - if (mode & aDIR) fstrcat(attrstr,"D"); - if (mode & aARCH) fstrcat(attrstr,"A"); - if (mode & aHIDDEN) fstrcat(attrstr,"H"); - if (mode & aSYSTEM) fstrcat(attrstr,"S"); - if (mode & aRONLY) fstrcat(attrstr,"R"); - - return(attrstr); -} - -/******************************************************************* Show a smb message structure. ********************************************************************/ Modified: trunk/source/lib/util_str.c =================================================================== --- trunk/source/lib/util_str.c 2006-05-04 12:57:27 UTC (rev 15431) +++ trunk/source/lib/util_str.c 2006-05-04 13:04:22 UTC (rev 15432) @@ -795,40 +795,7 @@ return num_chars; } -DATA_BLOB strhex_to_data_blob(TALLOC_CTX *mem_ctx, const char *strhex) -{ - DATA_BLOB ret_blob; - - if (mem_ctx != NULL) - ret_blob = data_blob_talloc(mem_ctx, NULL, strlen(strhex)/2+1); - else - ret_blob = data_blob(NULL, strlen(strhex)/2+1); - - ret_blob.length = strhex_to_str((char*)ret_blob.data, - strlen(strhex), - strhex); - - return ret_blob; -} - /** - * Routine to print a buffer as HEX digits, into an allocated string. - */ - -char *hex_encode(TALLOC_CTX *mem_ctx, const unsigned char *buff_in, size_t len) -{ - int i; - char *hex_buffer; - - hex_buffer = TALLOC_ARRAY(mem_ctx, char, (len*2)+1); - - for (i = 0; i < len; i++) - slprintf(&hex_buffer[i*2], 3, "%02X", buff_in[i]); - - return hex_buffer; -} - -/** Check if a string is part of a list. **/ @@ -2415,3 +2382,52 @@ return True; } + +/** +return the number of bytes occupied by a buffer in ASCII format +the result includes the null termination +limited by 'n' bytes +**/ +size_t ascii_len_n(const char *src, size_t n) +{ + size_t len; + + len = strnlen(src, n); + if (len+1 <= n) { + len += 1; + } + + return len; +} + +/** +return the number of bytes occupied by a buffer in CH_UTF16 format +the result includes the null termination +**/ +size_t utf16_len(const void *buf) +{ + size_t len; + + for (len = 0; SVAL(buf,len); len += 2) ; + + return len + 2; +} + +/** +return the number of bytes occupied by a buffer in CH_UTF16 format +the result includes the null termination +limited by 'n' bytes +**/ +size_t utf16_len_n(const void *src, size_t n) +{ + size_t len; + + for (len = 0; (len+2 < n) && SVAL(src, len); len += 2) ; + + if (len+2 <= n) { + len += 2; + } + + return len; +} + Modified: trunk/source/libsmb/trusts_util.c =================================================================== --- trunk/source/libsmb/trusts_util.c 2006-05-04 12:57:27 UTC (rev 15431) +++ trunk/source/libsmb/trusts_util.c 2006-05-04 13:04:22 UTC (rev 15432) @@ -95,7 +95,7 @@ if (NT_STATUS_IS_OK(nt_status)) { DEBUG(3,("%s : trust_pw_change_and_store_it: Changed password.\n", - timestring(False))); + current_timestring(False))); /* * Return the result of trying to write the new password * back into the trust account file. Modified: trunk/source/torture/rpctorture.c =================================================================== --- trunk/source/torture/rpctorture.c 2006-05-04 12:57:27 UTC (rev 15431) +++ trunk/source/torture/rpctorture.c 2006-05-04 13:04:22 UTC (rev 15432) @@ -493,7 +493,7 @@ strupper_m(global_myname); fstrcpy(cli_info.myhostname, global_myname); - DEBUG(3,("%s client started (version %s)\n",timestring(False),SAMBA_VERSION_STRING)); + DEBUG(3,("%s client started (version %s)\n",current_timestring(False),SAMBA_VERSION_STRING)); if (*smb_cli->domain == 0) { Modified: trunk/source/web/swat.c =================================================================== --- trunk/source/web/swat.c 2006-05-04 12:57:27 UTC (rev 15431) +++ trunk/source/web/swat.c 2006-05-04 13:04:22 UTC (rev 15432) @@ -432,7 +432,7 @@ { fprintf(f, "# Samba config file created using SWAT\n"); fprintf(f, "# from %s (%s)\n", cgi_remote_host(), cgi_remote_addr()); - fprintf(f, "# Date: %s\n\n", timestring(False)); + fprintf(f, "# Date: %s\n\n", current_timestring(False)); lp_dump(f, show_defaults, iNumNonAutoPrintServices); }
