/*
* SARG Squid Analysis Report Generator http://sarg.sourceforge.net
- * 1998, 2013
+ * 1998, 2015
*
* SARG donations:
* please look at http://sarg.sourceforge.net/donations.php
int z1, z2;
if((fp_usr=fopen(UserTabFile,"r"))==NULL) {
- debuga(_("(usertab) Cannot open file %s: %s\n"),UserTabFile,strerror(errno));
+ debuga(__FILE__,__LINE__,_("Cannot open file \"%s\": %s\n"),UserTabFile,strerror(errno));
exit(EXIT_FAILURE);
}
if (fseek(fp_usr, 0, SEEK_END)==-1) {
- debuga(_("Failed to move till the end of the usertab file %s: %s\n"),UserTabFile,strerror(errno));
+ debuga(__FILE__,__LINE__,_("Failed to move till the end of file \"%s\": %s\n"),UserTabFile,strerror(errno));
exit(EXIT_FAILURE);
}
nreg = ftell(fp_usr);
if (nreg<0) {
- debuga(_("Cannot get the size of file %s\n"),UserTabFile);
+ debuga(__FILE__,__LINE__,_("Cannot get the size of file \"%s\"\n"),UserTabFile);
exit(EXIT_FAILURE);
}
nreg += 100;
if (fseek(fp_usr, 0, SEEK_SET)==-1) {
- debuga(_("Failed to rewind the usertab file %s: %s\n"),UserTabFile,strerror(errno));
+ debuga(__FILE__,__LINE__,_("Failed to rewind file \"%s\": %s\n"),UserTabFile,strerror(errno));
exit(EXIT_FAILURE);
}
if((userfile=(char *) malloc(nreg))==NULL){
- debuga(_("ERROR: Cannot load. Memory fault\n"));
+ debuga(__FILE__,__LINE__,_("ERROR: Cannot load. Memory fault\n"));
exit(EXIT_FAILURE);
}
userfile[0]='\t';
z1=0;
while(buf[z1] && (unsigned char)buf[z1]>' ') {
if (z2+3>=nreg) { //need at least 3 additional bytes for the minimum string "\n\t\0"
- debuga(_("The list of the users is too long in your %s file.\n"),UserTabFile);
+ debuga(__FILE__,__LINE__,_("The list of users is too long in file \"%s\"\n"),UserTabFile);
exit(EXIT_FAILURE);
}
userfile[z2++]=buf[z1++];
userfile[z2++]='\n';
while(buf[z1] && (unsigned char)buf[z1]>=' ') {
if (z2+2>=nreg) { //need at least 2 additional bytes for "\t\0"
- debuga(_("The list of the users is too long in your %s file.\n"),UserTabFile);
+ debuga(__FILE__,__LINE__,_("The list of users is too long in file \"%s\"\n"),UserTabFile);
exit(EXIT_FAILURE);
}
userfile[z2++]=buf[z1++];
userfile[z2++]='\t';
}
userfile[z2]='\0';
- fclose(fp_usr);
+ if (fclose(fp_usr)==EOF) {
+ debuga(__FILE__,__LINE__,_("Read error in \"%s\": %s\n"),UserTabFile,strerror(errno));
+ exit(EXIT_FAILURE);
+ }
}
static void get_usertab_name(const char *user,char *name,int namelen)
url.lud_scope = LDAP_SCOPE_DEFAULT;
ldapuri = ldap_url_desc2str(&url);
if (ldapuri==NULL) {
- debuga(_("Cannot prepare ldap URI for server %s on port %d\n"),LDAPHost,LDAPPort);
+ debuga(__FILE__,__LINE__,_("Cannot prepare ldap URI for server %s on port %d\n"),LDAPHost,LDAPPort);
exit(EXIT_FAILURE);
}
rc = ldap_initialize(&ldap_handle, ldapuri);
if (rc != LDAP_SUCCESS) {
- debuga(_("Unable to connect to LDAP server %s on port %d: %d (%s)\n"), LDAPHost, LDAPPort, rc, ldap_err2string(rc));
+ debuga(__FILE__,__LINE__,_("Unable to connect to LDAP server %s on port %d: %d (%s)\n"), LDAPHost, LDAPPort, rc, ldap_err2string(rc));
exit(EXIT_FAILURE);
}
ldap_memfree(ldapuri);
if (ldap_set_option(ldap_handle, LDAP_OPT_REFERRALS, LDAP_OPT_OFF) != LDAP_OPT_SUCCESS) {
- debuga(_("Could not disable LDAP_OPT_REFERRALS\n"));
+ debuga(__FILE__,__LINE__,_("Could not disable LDAP_OPT_REFERRALS\n"));
exit(EXIT_FAILURE);
}
int ldap_protocol_version = LDAPProtocolVersion;
if (ldap_set_option(ldap_handle, LDAP_OPT_PROTOCOL_VERSION, &ldap_protocol_version) != LDAP_SUCCESS) {
- debuga(_("Could not set LDAP protocol version %d\n"), ldap_protocol_version);
+ debuga(__FILE__,__LINE__,_("Could not set LDAP protocol version %d\n"), ldap_protocol_version);
exit(EXIT_FAILURE);
}
/* Bind to the LDAP server. */
rc = ldap_simple_bind_s( ldap_handle, LDAPBindDN, LDAPBindPW );
if ( rc != LDAP_SUCCESS ) {
- debuga(_("Cannot bind to LDAP server: %s\n"), ldap_err2string(rc));
+ debuga(__FILE__,__LINE__,_("Cannot bind to LDAP server: %s\n"), ldap_err2string(rc));
exit(EXIT_FAILURE);
}
if (LDAPNativeCharset[0]!='\0') {
ldapiconv = iconv_open( LDAPNativeCharset, "UTF-8" );
if (ldapiconv==(iconv_t)-1) {
- debuga(_("iconv cannot convert from UTF-8 to %s: %s\n"),LDAPNativeCharset,strerror(errno));
+ debuga(__FILE__,__LINE__,_("iconv cannot convert from UTF-8 to %s: %s\n"),LDAPNativeCharset,strerror(errno));
exit(EXIT_FAILURE);
}
}
size_t str_in_len;
size_t str_out_len;
- str_in_len = strlen( str_in );
+ str_in_len = strlen( str_in ) + 1;//process the terminating NUL too
str_out_len = ( 2 * str_in_len );
if (ldapconvbuffer==NULL || ldapconvbuffersize<str_out_len) {
ldapconvbuffersize=str_out_len;
- str_out = realloc(ldapconvbuffer,str_out_len);
+ str_out = realloc(ldapconvbuffer,ldapconvbuffersize);
if (!str_out) {
- debuga(_("Not enough memory to convert a LDAP returned string: %lu bytes required\n"),(unsigned long int)str_out_len);
+ debuga(__FILE__,__LINE__,_("Not enough memory to convert a LDAP returned string: %lu bytes required\n"),(unsigned long int)str_out_len);
exit(EXIT_FAILURE);
}
ldapconvbuffer = str_out;
} else {
str_out = ldapconvbuffer;
+ str_out_len = ldapconvbuffersize;
}
str_in_orig = str_in;
return_value = iconv(ldapiconv, (ICONV_CONST char **)&str_in, &str_in_len, &str_out, &str_out_len );
if ( return_value == ( size_t ) -1 ) {
- debuga(_("iconv failed: in string '%s':\n"),str_in_orig);
+ /* TRANSLATORS: The message is followed by the reason for the failure. */
+ debuga(__FILE__,__LINE__,_("iconv failed on string \"%s\":\n"),str_in_orig);
switch ( errno ) {
/* See "man 3 iconv" for an explanation. */
case EILSEQ:
- debuga(_("Invalid multibyte sequence.\n"));
+ debuga(__FILE__,__LINE__,_("Invalid multibyte sequence.\n"));
break;
case EINVAL:
- debuga(_("Incomplete multibyte sequence.\n"));
+ debuga(__FILE__,__LINE__,_("Incomplete multibyte sequence.\n"));
break;
case E2BIG:
- debuga(_("No more room.\n"));
+ debuga(__FILE__,__LINE__,_("No more room.\n"));
break;
default:
- debuga(_("Error: %s.\n"),strerror( errno ));
+ debuga(__FILE__,__LINE__,_("Error: %s.\n"),strerror( errno ));
}
exit(EXIT_FAILURE);
}
attrs[1]=NULL;
rc= ldap_search_ext_s(ldap_handle, LDAPBaseSearch, LDAP_SCOPE_SUBTREE, filtersearch, attrs, 0, NULL, NULL, NULL, -1, &result);
if (rc != LDAP_SUCCESS) {
- debuga(_("LDAP search failed: %s\n"), ldap_err2string(rc));
- debuga(_("looking for \"%s\" at or below \"%s\"\n"),filtersearch,LDAPBaseSearch);
+ debuga(__FILE__,__LINE__,_("LDAP search failed: %s\nlooking for \"%s\" at or below \"%s\"\n"), ldap_err2string(rc),filtersearch,LDAPBaseSearch);
safe_strcpy(mappedname,userlogin,namelen);
return;
}
void init_usertab(const char *UserTabFile)
{
if (strcmp(UserTabFile, "ldap") == 0) {
- if(debug)
- debuga(_("Loading User table: %s\n"),UserTabFile);
+ if(debug) {
+ /* TRANSLATORS: The %s may be the string "ldap" or a file name.*/
+ debuga(__FILE__,__LINE__,_("Loading User table from \"%s\"\n"),UserTabFile);
+ }
#ifdef HAVE_LDAP_H
which_usertab=UTT_Ldap;
init_ldap_usertab();
#else
- debuga(_("LDAP module not compiled in sarg\n"));
+ debuga(__FILE__,__LINE__,_("LDAP module not compiled in sarg\n"));
exit(EXIT_FAILURE);
#endif //HAVE_LDAP_H
} else if (UserTabFile[0] != '\0') {
if(debug)
- debuga(_("Loading User table: %s\n"),UserTabFile);
+ debuga(__FILE__,__LINE__,_("Loading User table from \"%s\"\n"),UserTabFile);
which_usertab=UTT_File;
init_file_usertab(UserTabFile);
} else {