diff options
author | Michal Čihař <nijel@debian.org> | 2017-06-30 15:35:46 +0200 |
---|---|---|
committer | Michal Čihař <nijel@debian.org> | 2017-06-30 15:35:46 +0200 |
commit | 2c605769ea566cb79b7684b4c3b6a9f5740e858c (patch) | |
tree | c46d5f005d026d0ab1e73d67815d4e9141190fc6 | |
parent | b4bcd4b358a5ed9701642d1f8153306363374047 (diff) | |
parent | ab91c30e54a279ee9f8f7c5a63a597860c99a705 (diff) |
Updated version 1.38.4 from 'upstream/1.38.4'
with Debian dir 249cb84c262b83b3a28191dde33c1d5a55b5927d
103 files changed, 1057 insertions, 701 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index d3f113d..e9c997a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,7 +28,7 @@ if (LARGE_FILES) endif (LARGE_FILES) # Set version -set (GAMMU_VERSION "1.38.2" CACHE INTERNAL "") +set (GAMMU_VERSION "1.38.4" CACHE INTERNAL "") string (REGEX REPLACE "^([0-9]*)\\.([0-9]*)\\.([0-9]*)$" "\\1" "GAMMU_VERSION_MAJOR" "${GAMMU_VERSION}") string (REGEX REPLACE "^([0-9]*)\\.([0-9]*)\\.([0-9]*)$" "\\2" "GAMMU_VERSION_MINOR" "${GAMMU_VERSION}") string (REGEX REPLACE "^([0-9]*)\\.([0-9]*)\\.([0-9]*)$" "\\3" "GAMMU_VERSION_PATCH" "${GAMMU_VERSION}") @@ -430,7 +430,7 @@ if(MSVC) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi") set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF") set(MATH_LIBS "") - + # Call cmake with "-DMSVC_RUNTIME=static" to link with static runtime libraries configure_msvc_runtime() else(MSVC) @@ -490,16 +490,13 @@ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_MINGW OR MACRO_TUNE_COMPILER("-Wno-format-security") endif (WIN32 AND NOT CYGWIN) - # This is extremely noisy, use only in debug builds - if (DEBUG) - MACRO_TUNE_COMPILER("-Wextra") - if (NOT CLANG_COMPILER) - MACRO_TUNE_COMPILER("-Wunused-but-set-variable") - endif (NOT CLANG_COMPILER) - # Just silent this for now, too much code to fix here - MACRO_TUNE_COMPILER("-Wno-unused-parameter") - # Not sure if this is safe for all architectures - endif (DEBUG) + # Enable extra warnings + MACRO_TUNE_COMPILER("-Wextra") + if (NOT CLANG_COMPILER) + MACRO_TUNE_COMPILER("-Wunused-but-set-variable") + endif (NOT CLANG_COMPILER) + # Just silent this for now, too much code to fix here + MACRO_TUNE_COMPILER("-Wno-unused-parameter") # # Security related flags @@ -893,7 +890,7 @@ set (CPACK_COMPONENT_EXAMPLES_GROUP "Documentation") set (CPACK_COMPONENT_MANUAL_GROUP "Documentation") set (CPACK_COMPONENT_MEDIA_GROUP "Documentation") -set (CPACK_ALL_INSTALL_TYPES Standard Developer Full) +set (CPACK_ALL_INSTALL_TYPES Full Standard Developer) set (CPACK_COMPONENT_GAMMU_INSTALL_TYPES Standard Developer Full) set (CPACK_COMPONENT_SMSD_INSTALL_TYPES Standard Developer Full) @@ -19,6 +19,20 @@ the issue. ChangeLog ========= +20170618 - 1.38.4 + +[-] * Improved support for Huawei E3531 and E1756. +[-] * Fixed several issues with using library on Windows. + +20170523 - 1.38.3 + +[-] * Improved support for ZTE MF626. +[-] * Fixed USSD handling with longer codes. +[-] * Increased default value for StatusFrequency. +[-] * Improved SMSD response on signals. +[-] * Improved SMSD throughput on big queue. +[-] * Improved SMSD compatibility with Microsoft SQL Server. + 20170328 - 1.38.2 [-] * Improved support for Huawei K3765, E150 and E372. diff --git a/admin/codecov.sh b/admin/codecov.sh index eff1b4c..1e43f19 100755 --- a/admin/codecov.sh +++ b/admin/codecov.sh @@ -11,5 +11,8 @@ export PATH="C:/MinGW/bin:$PATH" # Download codecov script curl -s -o codecov.sh https://codecov.io/bash +# Merge files +python ./contrib/coveragehelper/merge-cobertura.py --output cobertura.xml --match 'cobertura*.xml' + # Upload in chunks of 5 files -ls cobertura*.xml | sed -e 's/^/-f /' | xargs -n 10 bash ./codecov.sh -X nocolor -X gcov -F windows +bash ./codecov.sh -X nocolor -X gcov -F windows -f cobertura.xml -f cobertura1.xml diff --git a/admin/windows-coverage.bat b/admin/windows-coverage.bat deleted file mode 100644 index c311640..0000000 --- a/admin/windows-coverage.bat +++ /dev/null @@ -1 +0,0 @@ -@python c:\projects\gammu\admin\windows-coverage.py %* diff --git a/admin/windows-coverage.py b/admin/windows-coverage.py deleted file mode 100755 index c9ada14..0000000 --- a/admin/windows-coverage.py +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/bin/env python - -# Wrapper for CTest to execute every test through OpenCPPCoverage. - -# Unfortunately there doesn't seem to be way to hook into the process than -# pretending to be valgrind memory tester. - -# Usage: - -# cmake \ -# -DMEMORYCHECK_COMMAND=windows-coverage.bat \ -# -DMEMORYCHECK_COMMAND_OPTIONS=--separator \ -# -DMEMORYCHECK_TYPE=Valgrind -# ctest -D NightlyMemCheck - - -import os -import subprocess -import sys - - -ROOT_DIR = 'c:\\projects\\gammu' -COVERAGE = 'c:\\projects\\gammu\\cobertura{0}.xml' - - -def main(): - - # Parse params passed by CTest - logfile = None - for arg in sys.argv: - if arg.startswith('--log-file='): - logfile = arg.split('=', 1)[1] - break - if logfile is None: - raise Exception('Missing --log-file') - - # Create empty file (CTest expects to find it) - open(logfile, 'w') - - # Figure out test number (it's included in log name) - test_num = os.path.basename(logfile).split('.')[1] - coverage_file = COVERAGE.format(test_num) - - # Coverage command - cmd = [ - 'OpenCppCoverage.exe', - '--quiet', - '--export_type', 'cobertura:{0}'.format(coverage_file), - '--modules', ROOT_DIR, - '--sources', ROOT_DIR, - '--' - ] - - # Get test command out of passed args - command = sys.argv[sys.argv.index('--separator') + 1:] - - # Execute with code coverage - result = subprocess.call(cmd + command) - - # Propagate error code - sys.exit(result) - - -if __name__ == '__main__': - main() diff --git a/appveyor.yml b/appveyor.yml index 28b1de0..0349f3f 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -33,16 +33,16 @@ before_build: -DODBC_TESTING=OFF "-DODBC_DSN=mysql:Driver={MySQL ODBC 5.3 Unicode Driver}:host=localhost;dbname=smsd" -DMYSQL_TESTING=ON -DMYSQL_USER=root "-DMYSQL_PASSWORD=Password12!" -DPSQL_TESTING=ON -DPSQL_USER=postgres "-DPSQL_PASSWORD=Password12!" - -DMEMORYCHECK_COMMAND="c:/projects/gammu/admin/windows-coverage.bat" -DMEMORYCHECK_COMMAND_OPTIONS="--separator" -DMEMORYCHECK_TYPE=Valgrind + -DMEMORYCHECK_COMMAND="c:/projects/gammu/contrib/coveragehelper/Debug/coveragehelper.exe" -DMEMORYCHECK_COMMAND_OPTIONS="--separator" -DMEMORYCHECK_TYPE=Valgrind -DPOSTGRES_FOUND=OFF -DMYSQL_FOUND=OFF build: project: ALL_BUILD.vcxproj parallel: true - verbosity: quiet + verbosity: minimal after_build: - - cmake --build . --config %CONFIGURATION% --target package + - cmake --build . --config %CONFIGURATION% --target package -- /verbosity:minimal test_script: - "SET PATH=%MYSQL_PATH%\\bin;%POSTGRESQL_PATH%\\bin;c:\\projects\\gammu;%PATH%" diff --git a/contrib/CMakeLists.txt b/contrib/CMakeLists.txt index 63bb70b..eadf00a 100644 --- a/contrib/CMakeLists.txt +++ b/contrib/CMakeLists.txt @@ -129,6 +129,7 @@ endif (INSTALL_UDEV_RULES) add_subdirectory(smscgi) add_subdirectory(convert) add_subdirectory(sqlreply) +add_subdirectory(coveragehelper) if (DEBUG OR "$ENV{TRAVIS}" STREQUAL "true") add_subdirectory(cpp-sample) diff --git a/contrib/coveragehelper/CMakeLists.txt b/contrib/coveragehelper/CMakeLists.txt new file mode 100644 index 0000000..f6cc226 --- /dev/null +++ b/contrib/coveragehelper/CMakeLists.txt @@ -0,0 +1,4 @@ +project (Gammu-contrib-coveragehelper C) + +add_executable(coveragehelper "coveragehelper.c") + diff --git a/contrib/coveragehelper/coveragehelper.c b/contrib/coveragehelper/coveragehelper.c new file mode 100644 index 0000000..eb2426d --- /dev/null +++ b/contrib/coveragehelper/coveragehelper.c @@ -0,0 +1,161 @@ +/* + * Wrapper for CTest to execute every test through OpenCPPCoverage. + * + * Unfortunately there doesn't seem to be way to hook into the process than + * pretending to be valgrind memory tester. + * + * Usage: + * + * cmake \ + * -DMEMORYCHECK_COMMAND=coveragehelper \ + * -DMEMORYCHECK_COMMAND_OPTIONS=--separator \ + * -DMEMORYCHECK_TYPE=Valgrind + * ctest -D NightlyMemCheck + */ + +#include <string.h> +#include <stdio.h> +#include <stdlib.h> +#ifdef WIN32 +#include <windows.h> +#endif + +#define ROOT_DIR "c:\\projects\\gammu" +#define COVERAGE_TEMPLATE "c:\\projects\\gammu\\cobertura%s.xml" +#define ARG_SEPARATOR "--separator" +#define ARG_LOG "--log-file=" +#define ARG_LOG_LEN 11 + +int main(int argc, char *argv[]) +{ + int i; + char *logfile = NULL, *separator=NULL, *testnum, *tmp, *command, *commandline; + char logname[1000]; + FILE *handle; +#ifdef WIN32 + BOOL result; + STARTUPINFO si; + PROCESS_INFORMATION pi; + DWORD exitcode; + + commandline = GetCommandLine(); +#else + commandline = malloc(32768); + *commandline = '\0'; +#endif + + // Parse params passed by CTest + for (i = 1; i < argc; i++) { + if (strncmp(argv[i], ARG_LOG, ARG_LOG_LEN) == 0) { + logfile = argv[i] + ARG_LOG_LEN; + } +#ifndef WIN32 + // This does not do proper escaping, but the code + // does not execute on non WIN32, it's for testing only + strcat(commandline, argv[i]); + strcat(commandline, " "); +#endif + } + + if (logfile == NULL) { + printf("MISSING PARAMETER: " ARG_LOG "\n"); + return 1; + } + + separator = strstr(commandline, ARG_SEPARATOR); + + if (separator == NULL) { + printf("MISSING PARAMETER: " ARG_SEPARATOR "\n"); + return 1; + } + separator += strlen(ARG_SEPARATOR); + + // Create empty file (CTest expects to find it) + handle = fopen(logfile, "w"); + if (handle == NULL) { + printf("FAILED TO CREATE LOG: %s\n", logfile); + return 1; + } + fclose(handle); + + // Figure out test number (it's included in log name) + tmp = strrchr(logfile, '/'); + if (tmp == NULL) { + tmp = strrchr(logfile, '\\'); + } + if (tmp == NULL) { + goto fail_number; + } + testnum = strchr(logfile, '.'); + if (testnum == NULL) { + goto fail_number; + } + testnum += 1; + tmp = strchr(testnum, '.'); + if (tmp == NULL) { + goto fail_number; + } + *tmp = '\0'; + + // Calculate log name + sprintf(logname, COVERAGE_TEMPLATE, testnum); + + // Prepare command line + command = malloc(32768); + if (command == NULL) { + printf("FAILED TO ALLOCATE!\n"); + return 1; + } + sprintf( + command, + "OpenCppCoverage.exe --quiet --export_type cobertura:%s --modules %s --sources %s -- %s", + logname, + ROOT_DIR, + ROOT_DIR, + separator + ); + +#ifdef WIN32 + ZeroMemory(&si, sizeof(si)); + si.cb = sizeof(si); + ZeroMemory(&pi, sizeof(pi)); + + result = CreateProcess(NULL, /* No module name (use command line) */ + command, /* Command line */ + NULL, /* Process handle not inheritable*/ + NULL, /* Thread handle not inheritable*/ + TRUE, /* Set handle inheritance to TRUE*/ + 0, /* No creation flags*/ + NULL, /* Use parent's environment block*/ + NULL, /* Use parent's starting directory */ + &si, /* Pointer to STARTUPINFO structure*/ + &pi ); /* Pointer to PROCESS_INFORMATION structure*/ + if (! result) { + printf("FAILED TO EXECUTE: \"%s\" error=0x%x\n", command, (int)GetLastError()); + return 1; + } + free(command); + // Wait for process + WaitForSingleObject( pi.hProcess, INFINITE ); + + // Get the exit code. + result = GetExitCodeProcess(pi.hProcess, &exitcode); + + // Close the handles. + CloseHandle( pi.hProcess ); + CloseHandle( pi.hThread ); + + if (! result) { + printf("FAILED TO GET RESULT!\n"); + return 1; + } + return exitcode; +#else + printf("CMD: %s\n", command); + return 0; +#endif + +fail_number: + printf("FAILED TO PARSE TEST NUMBER: %s\n", logfile); + return 1; +} diff --git a/contrib/coveragehelper/merge-cobertura.py b/contrib/coveragehelper/merge-cobertura.py new file mode 100755 index 0000000..979f42b --- /dev/null +++ b/contrib/coveragehelper/merge-cobertura.py @@ -0,0 +1,176 @@ +#!/usr/bin/env python +""" +Cobertura XML report merger + +Written for merging OpenCppCoverage reports, thus not completely supporting all +Cobertura XML attributes, only line coverage which OpenCppCoverage generates. +Anything else is simply discarded in the process. + +Copyright (C) 2017 Michal Cihar <michal@cihar.com> + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +""" +import argparse +import glob +import sys +try: + from xml.etree.cElementTree import ( + iterparse, Element, SubElement, ElementTree, + ) +except ImportError: + from xml.etree.ElementTree import ( + iterparse, Element, SubElement, ElementTree, + ) + +HEADER = '''<?xml version="1.0"?> +<!DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-04.dtd"> +''' + + +def log(message=''): + """Log message to strderr""" + sys.stderr.write(message) + sys.stderr.write('\n') + + +def read_files(names): + """Read coverage data from input files""" + result = {} + lines = {} + outfile = None + log('Reading files:') + + for filename in names: + log('* {}'.format(filename)) + for event, elem in iterparse(filename, events=('start', 'end')): + if elem.tag == 'class' and event == 'start': + outfile = elem.get('filename') + lines = result.get(outfile, {}) + elif elem.tag == 'line' and event == 'end': + line = elem.get('number') + lines[line] = lines.get(line, 0) + int(elem.get('hits')) + elif elem.tag == 'class' and event == 'end': + result[outfile] = lines + log() + + return result + + +def get_line_rates(data): + """Calculate line hit rates from raw coverage data""" + result = {} + total_lines = 0 + total_hits = 0 + log('Counting line rates:') + for item in data: + lines = len(data[item]) + hits = sum([1 for x in data[item].values() if x]) + result[item] = 1.0 * hits / lines + log(' * {0} = {1} ({2} / {3})'.format(item, result[item], hits, lines)) + total_lines += lines + total_hits += hits + + result['_'] = 1.0 * total_hits / total_lines + result['_hits'] = total_hits + result['_lines'] = total_lines + + return result + + +def write_data(data, handle): + """Write Cobertura XML for coverage data""" + line_rates = get_line_rates(data) + + log('Generating output...') + root = Element('coverage') + root.set('line-rate', str(line_rates['_'])) + root.set('branch-rate', '0') + root.set('complexity', '0') + root.set('branches-covered', '0') + root.set('branches-valid', '0') + root.set('timestamp', '0') + root.set('lines-covered', str(line_rates['_hits'])) + root.set('lines-valid', str(line_rates['_lines'])) + root.set('version', '0') + + sources = SubElement(root, 'sources') + source = SubElement(sources, 'source') + source.text = 'c:' + + packages = SubElement(root, 'packages') + package = SubElement(packages, 'package') + package.set('name', 'gammu.exe') + package.set('line-rate', str(line_rates['_'])) + package.set('branch-rate', '0') + package.set('complexity', '0') + classes = SubElement(package, 'classes') + + for item in data: + obj = SubElement(classes, 'class') + obj.set('name', item.rsplit('\\', 1)[1]) + obj.set('filename', item) + obj.set('line-rate', str(line_rates[item])) + obj.set('branch-rate', '0') + obj.set('complexity', '0') + SubElement(obj, 'methods') + lines = SubElement(obj, 'lines') + for line in sorted(data[item], key=lambda x: int(x)): + obj = SubElement(lines, 'line') + obj.set('number', line) + obj.set('hits', str(data[item][line])) + + tree = ElementTree(root) + + handle.write(HEADER) + + tree.write(handle, xml_declaration=False) + + +def main(): + """Command line interface""" + parser = argparse.ArgumentParser( + description=sys.modules[__name__].__doc__, + formatter_class=argparse.RawDescriptionHelpFormatter, + ) + parser.add_argument( + '-m', '--match', + help='wildcard to match files to process' + ) + parser.add_argument( + '-o', '--output', + help='output file, stdout used if omitted' + ) + parser.add_argument( + 'file', + nargs='*', + help='files to process' + ) + args = parser.parse_args() + if args.match: + files = glob.glob(args.match) + else: + files = args.file + + result = read_files(files) + + if args.output: + with open(args.output, 'w') as handle: + write_data(result, handle) + else: + write_data(result, sys.stdout) + + +if __name__ == '__main__': + main() diff --git a/contrib/coveragehelper/split-codecov.py b/contrib/coveragehelper/split-codecov.py new file mode 100755 index 0000000..2018309 --- /dev/null +++ b/contrib/coveragehelper/split-codecov.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +from __future__ import print_function +import sys + + +def main(): + with open(sys.argv[1]) as handle: + output = None + for line in handle.readlines(): + if line.startswith('# path='): + name = line.split('=', 1)[1].strip() + print('Creating {0}'.format(name)) + if output: + output.close() + output = open(name, 'w') + elif line.startswith('<<<<<< EOF'): + output.close() + elif output: + output.write(line) + if output: + output.close() + + +if __name__ == '__main__': + main() diff --git a/contrib/smscgi/smsd.c b/contrib/smscgi/smsd.c index 8afc310..52f4699 100644 --- a/contrib/smscgi/smsd.c +++ b/contrib/smscgi/smsd.c @@ -23,11 +23,20 @@ #include <stdio.h> #include <string.h> #include <errno.h> +#include <signal.h> #include "sms_cgi.h" static GSM_StateMachine *s; static INI_Section *cfg; +volatile int signalled; + +void interrupt(int sign) +{ + signal(sign, SIG_IGN); + GSM_AbortOperation(s); + signalled = 1; +} /* Function to handle errors */ void error_handler(void) @@ -46,6 +55,8 @@ int main(int argc UNUSED, char **argv UNUSED) GSM_Debug_Info *debug_info; const char*tmp; + signal(SIGINT, interrupt); + /* Enable global debugging to stderr */ debug_info = GSM_GetGlobalDebug(); GSM_SetDebugFileDescriptor(stderr, FALSE, debug_info); @@ -117,6 +128,10 @@ int main(int argc UNUSED, char **argv UNUSED) /* ---------------------------------------- set the SMS callback function */ GSM_SetIncomingSMSCallback(s, cgi_enqueue, NULL); smprintf(s, "registered sms callback\n"); + + if (signalled) { + break; + } } /* Terminate connection */ diff --git a/description-pak b/description-pak index f70f32c..71f9771 100644 --- a/description-pak +++ b/description-pak @@ -1,4 +1,4 @@ -Gammu (Gammu All Mobile Management Utilities) 1.38.2 +Gammu (Gammu All Mobile Management Utilities) 1.38.4 Gammu is a command line utility and library to work with mobile phones from many vendors. Support for different models differs, but basic diff --git a/docs/man/gammu-backup.5 b/docs/man/gammu-backup.5 index 7748251..0e50c0e 100644 --- a/docs/man/gammu-backup.5 +++ b/docs/man/gammu-backup.5 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "GAMMU-BACKUP" "5" "Mar 28, 2017" "1.38.2" "Gammu" +.TH "GAMMU-BACKUP" "5" "Jun 18, 2017" "1.38.4" "Gammu" .SH NAME gammu-backup \- gammu(1) backup file format. . diff --git a/docs/man/gammu-config.1 b/docs/man/gammu-config.1 index f0fc5f3..d8bb25d 100644 --- a/docs/man/gammu-config.1 +++ b/docs/man/gammu-config.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "GAMMU-CONFIG" "1" "Mar 28, 2017" "1.38.2" "Gammu" +.TH "GAMMU-CONFIG" "1" "Jun 18, 2017" "1.38.4" "Gammu" .SH NAME gammu-config \- Gammu configurator . diff --git a/docs/man/gammu-detect.1 b/docs/man/gammu-detect.1 index 20580cb..dbd12c5 100644 --- a/docs/man/gammu-detect.1 +++ b/docs/man/gammu-detect.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "GAMMU-DETECT" "1" "Mar 28, 2017" "1.38.2" "Gammu" +.TH "GAMMU-DETECT" "1" "Jun 18, 2017" "1.38.4" "Gammu" .SH NAME gammu-detect \- Gammu device detection . diff --git a/docs/man/gammu-smsbackup.5 b/docs/man/gammu-smsbackup.5 index b132f00..f81eab1 100644 --- a/docs/man/gammu-smsbackup.5 +++ b/docs/man/gammu-smsbackup.5 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "GAMMU-SMSBACKUP" "5" "Mar 28, 2017" "1.38.2" "Gammu" +.TH "GAMMU-SMSBACKUP" "5" "Jun 18, 2017" "1.38.4" "Gammu" .SH NAME gammu-smsbackup \- gammu(1) SMS backup file format. . diff --git a/docs/man/gammu-smsd-dbi.7 b/docs/man/gammu-smsd-dbi.7 index 3d64941..cd1c1ca 100644 --- a/docs/man/gammu-smsd-dbi.7 +++ b/docs/man/gammu-smsd-dbi.7 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "GAMMU-SMSD-DBI" "7" "Mar 28, 2017" "1.38.2" "Gammu" +.TH "GAMMU-SMSD-DBI" "7" "Jun 18, 2017" "1.38.4" "Gammu" .SH NAME gammu-smsd-dbi \- gammu-smsd(1) backend using DBI abstraction layer to use any supported database as a message storage . diff --git a/docs/man/gammu-smsd-files.7 b/docs/man/gammu-smsd-files.7 index c50b5bc..d4db87b 100644 --- a/docs/man/gammu-smsd-files.7 +++ b/docs/man/gammu-smsd-files.7 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "GAMMU-SMSD-FILES" "7" "Mar 28, 2017" "1.38.2" "Gammu" +.TH "GAMMU-SMSD-FILES" "7" "Jun 18, 2017" "1.38.4" "Gammu" .SH NAME gammu-smsd-files \- gammu-smsd(1) backend using filesystem as a message storage . diff --git a/docs/man/gammu-smsd-inject.1 b/docs/man/gammu-smsd-inject.1 index ab342c3..1190eda 100644 --- a/docs/man/gammu-smsd-inject.1 +++ b/docs/man/gammu-smsd-inject.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "GAMMU-SMSD-INJECT" "1" "Mar 28, 2017" "1.38.2" "Gammu" +.TH "GAMMU-SMSD-INJECT" "1" "Jun 18, 2017" "1.38.4" "Gammu" .SH NAME gammu-smsd-inject \- Inject messages into queue of SMS daemon for Gammu . diff --git a/docs/man/gammu-smsd-monitor.1 b/docs/man/gammu-smsd-monitor.1 index a2b0746..13b93da 100644 --- a/docs/man/gammu-smsd-monitor.1 +++ b/docs/man/gammu-smsd-monitor.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "GAMMU-SMSD-MONITOR" "1" "Mar 28, 2017" "1.38.2" "Gammu" +.TH "GAMMU-SMSD-MONITOR" "1" "Jun 18, 2017" "1.38.4" "Gammu" .SH NAME gammu-smsd-monitor \- Monitor state of SMS daemon for Gammu . diff --git a/docs/man/gammu-smsd-mysql.7 b/docs/man/gammu-smsd-mysql.7 index 6e10cb0..18867b4 100644 --- a/docs/man/gammu-smsd-mysql.7 +++ b/docs/man/gammu-smsd-mysql.7 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "GAMMU-SMSD-MYSQL" "7" "Mar 28, 2017" "1.38.2" "Gammu" +.TH "GAMMU-SMSD-MYSQL" "7" "Jun 18, 2017" "1.38.4" "Gammu" .SH NAME gammu-smsd-mysql \- gammu-smsd(1) backend using MySQL database server as a message storage . diff --git a/docs/man/gammu-smsd-null.7 b/docs/man/gammu-smsd-null.7 index 399058c..b537d41 100644 --- a/docs/man/gammu-smsd-null.7 +++ b/docs/man/gammu-smsd-null.7 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "GAMMU-SMSD-NULL" "7" "Mar 28, 2017" "1.38.2" "Gammu" +.TH "GAMMU-SMSD-NULL" "7" "Jun 18, 2017" "1.38.4" "Gammu" .SH NAME gammu-smsd-null \- gammu-smsd(1) backend not storing messages . diff --git a/docs/man/gammu-smsd-odbc.7 b/docs/man/gammu-smsd-odbc.7 index baf8c88..e6bc132 100644 --- a/docs/man/gammu-smsd-odbc.7 +++ b/docs/man/gammu-smsd-odbc.7 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "GAMMU-SMSD-ODBC" "7" "Mar 28, 2017" "1.38.2" "Gammu" +.TH "GAMMU-SMSD-ODBC" "7" "Jun 18, 2017" "1.38.4" "Gammu" .SH NAME gammu-smsd-odbc \- gammu-smsd(1) backend using ODBC abstraction layer to use any supported database as a message storage . @@ -48,10 +48,15 @@ On Microsoft Windows, Gammu uses native ODBC, on other platforms, \fI\%unixODBC\ can be used. .SH LIMITATIONS .sp -Due to limits of the ODBC interface, you might have to tweak SQL queries to -work in used SQL server, see SQL Queries for more details. +Due to limits of the ODBC interface, Gammu can not reliably detect which SQL +engine it is connected to. .sp -Partially this can be configured using \fBSQL\fP\&. +In most cases this can be solved by setting \fBSQL\fP setting to +correct dialect. +.sp +If that fails, you can also tweak the SQL queries to work in used SQL server, +see SQL Queries for more details. Still you should set +\fBSQL\fP to closest matching SQL dialect. .SH CONFIGURATION .sp Before running gammu\-smsd you need to create necessary tables in the diff --git a/docs/man/gammu-smsd-pgsql.7 b/docs/man/gammu-smsd-pgsql.7 index 03c50ab..3606b1b 100644 --- a/docs/man/gammu-smsd-pgsql.7 +++ b/docs/man/gammu-smsd-pgsql.7 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "GAMMU-SMSD-PGSQL" "7" "Mar 28, 2017" "1.38.2" "Gammu" +.TH "GAMMU-SMSD-PGSQL" "7" "Jun 18, 2017" "1.38.4" "Gammu" .SH NAME gammu-smsd-pgsql \- gammu-smsd(1) backend using PostgreSQL database server as a message storage . diff --git a/docs/man/gammu-smsd-run.7 b/docs/man/gammu-smsd-run.7 index 920e81d..4b58542 100644 --- a/docs/man/gammu-smsd-run.7 +++ b/docs/man/gammu-smsd-run.7 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "GAMMU-SMSD-RUN" "7" "Mar 28, 2017" "1.38.2" "Gammu" +.TH "GAMMU-SMSD-RUN" "7" "Jun 18, 2017" "1.38.4" "Gammu" .SH NAME gammu-smsd-run \- documentation for RunOnReceive directive . diff --git a/docs/man/gammu-smsd-sql.7 b/docs/man/gammu-smsd-sql.7 index 27123cb..2c76f9d 100644 --- a/docs/man/gammu-smsd-sql.7 +++ b/docs/man/gammu-smsd-sql.7 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "GAMMU-SMSD-SQL" "7" "Mar 28, 2017" "1.38.2" "Gammu" +.TH "GAMMU-SMSD-SQL" "7" "Jun 18, 2017" "1.38.4" "Gammu" .SH NAME gammu-smsd-sql \- gammu-smsd(1) backend using SQL abstraction layer to use any supported database as a message storage . diff --git a/docs/man/gammu-smsd-tables.7 b/docs/man/gammu-smsd-tables.7 index ae6bfe1..4d29d71 100644 --- a/docs/man/gammu-smsd-tables.7 +++ b/docs/man/gammu-smsd-tables.7 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "GAMMU-SMSD-TABLES" "7" "Mar 28, 2017" "1.38.2" "Gammu" +.TH "GAMMU-SMSD-TABLES" "7" "Jun 18, 2017" "1.38.4" "Gammu" .SH NAME gammu-smsd-tables \- description of tables for database backends of gammu-smsd(1) . diff --git a/docs/man/gammu-smsd.1 b/docs/man/gammu-smsd.1 index 19d7452..46bc1aa 100644 --- a/docs/man/gammu-smsd.1 +++ b/docs/man/gammu-smsd.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "GAMMU-SMSD" "1" "Mar 28, 2017" "1.38.2" "Gammu" +.TH "GAMMU-SMSD" "1" "Jun 18, 2017" "1.38.4" "Gammu" .SH NAME gammu-smsd \- SMS daemon for Gammu . diff --git a/docs/man/gammu-smsdrc.5 b/docs/man/gammu-smsdrc.5 index 06671ab..bdc0733 100644 --- a/docs/man/gammu-smsdrc.5 +++ b/docs/man/gammu-smsdrc.5 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "GAMMU-SMSDRC" "5" "Mar 28, 2017" "1.38.2" "Gammu" +.TH "GAMMU-SMSDRC" "5" "Jun 18, 2017" "1.38.4" "Gammu" .SH NAME gammu-smsdrc \- gammu-smsd(1) configuration file . @@ -242,7 +242,8 @@ Default is 0, what should mean no extra information. .INDENT 0.0 .TP .B CommTimeout -How many seconds should SMSD wait after there is no message in outbox. +How many seconds should SMSD wait after there is no message in outbox +before scanning it again. .sp Default is 30. .UNINDENT @@ -277,7 +278,9 @@ Default is 15. The number of seconds between refreshing phone status (battery, signal) stored in shared memory and possibly in service backends. Use 0 to disable. .sp -Default is 15. +You might want to increase this for higher throughput. +.sp +Default is 60. .UNINDENT .INDENT 0.0 .TP @@ -288,7 +291,13 @@ effects to other time based configurations, because they will be effectively rounded to multiply of this value. .sp Setting this to 0 disables sleeping. Please note this might cause Gammu to -consume quite a lot of CPU power. +consume quite a lot of CPU power as it will effectively do busy loop. +.sp +This sleep is utilized only if the main loop (sending and receiving +messages) takes less than defined time. For example if you set LoopSleep to +5 seconds and sending messages take 10 seconds, no sleep will be done in +the iteration which is sending messages. Also the sleep time is lowered by +the already processed time. .sp Default is 1. .UNINDENT diff --git a/docs/man/gammu.1 b/docs/man/gammu.1 index f82625a..ac5009b 100644 --- a/docs/man/gammu.1 +++ b/docs/man/gammu.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "GAMMU" "1" "Mar 28, 2017" "1.38.2" "Gammu" +.TH "GAMMU" "1" "Jun 18, 2017" "1.38.4" "Gammu" .SH NAME gammu \- Does some neat things with your cellular phone or modem. . diff --git a/docs/man/gammurc.5 b/docs/man/gammurc.5 index adcbfc6..c831076 100644 --- a/docs/man/gammurc.5 +++ b/docs/man/gammurc.5 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "GAMMURC" "5" "Mar 28, 2017" "1.38.2" "Gammu" +.TH "GAMMURC" "5" "Jun 18, 2017" "1.38.4" "Gammu" .SH NAME gammurc \- gammu(1) configuration file . diff --git a/docs/man/jadmaker.1 b/docs/man/jadmaker.1 index 2b195f1..480be48 100644 --- a/docs/man/jadmaker.1 +++ b/docs/man/jadmaker.1 @@ -1,6 +1,6 @@ .\" Man page generated from reStructuredText. . -.TH "JADMAKER" "1" "Mar 28, 2017" "1.38.2" "Gammu" +.TH "JADMAKER" "1" "Jun 18, 2017" "1.38.4" "Gammu" .SH NAME jadmaker \- JAD File Generator . diff --git a/docs/manual/project/install.rst b/docs/manual/project/install.rst index 58dc4d5..c4a00ae 100644 --- a/docs/manual/project/install.rst +++ b/docs/manual/project/install.rst @@ -580,4 +580,8 @@ You can install it using pip installer: pip install python-gammu +You need to have Gammu installed for compiling python-gammu. It's location is +discovered using pkg-config or by GAMMU_PATH environment variable. The latter +is recommended when building on Windows. + .. _CMake: http://www.cmake.org/ diff --git a/docs/manual/python/gammu.rst b/docs/manual/python/gammu.rst index 9a8dfde..ef1009d 100644 --- a/docs/manual/python/gammu.rst +++ b/docs/manual/python/gammu.rst @@ -107,7 +107,7 @@ This module wraps all python-gammu functionality. :param ID: ID of call :type ID: int - :param All: Answer all calls? + :param All: Answer all calls? Defaults to True :type All: bool :return: None :rtype: None @@ -128,7 +128,7 @@ This module wraps all python-gammu functionality. :param ID: ID of call :type ID: int - :param All: Cancel all calls? + :param All: Cancel all calls? Defaults to True :type All: bool :return: None :rtype: None diff --git a/docs/manual/smsd/config.rst b/docs/manual/smsd/config.rst index b1a8349..7f60dc4 100644 --- a/docs/manual/smsd/config.rst +++ b/docs/manual/smsd/config.rst @@ -169,7 +169,8 @@ General parameters of SMS daemon .. config:option:: CommTimeout - How many seconds should SMSD wait after there is no message in outbox. + How many seconds should SMSD wait after there is no message in outbox + before scanning it again. Default is 30. @@ -200,7 +201,9 @@ General parameters of SMS daemon The number of seconds between refreshing phone status (battery, signal) stored in shared memory and possibly in service backends. Use 0 to disable. - Default is 15. + You might want to increase this for higher throughput. + + Default is 60. .. config:option:: LoopSleep @@ -210,7 +213,13 @@ General parameters of SMS daemon rounded to multiply of this value. Setting this to 0 disables sleeping. Please note this might cause Gammu to - consume quite a lot of CPU power. + consume quite a lot of CPU power as it will effectively do busy loop. + + This sleep is utilized only if the main loop (sending and receiving + messages) takes less than defined time. For example if you set LoopSleep to + 5 seconds and sending messages take 10 seconds, no sleep will be done in + the iteration which is sending messages. Also the sleep time is lowered by + the already processed time. Default is 1. diff --git a/docs/manual/smsd/odbc.rst b/docs/manual/smsd/odbc.rst index e9efe10..d32e41f 100644 --- a/docs/manual/smsd/odbc.rst +++ b/docs/manual/smsd/odbc.rst @@ -28,10 +28,15 @@ can be used. Limitations ----------- -Due to limits of the ODBC interface, you might have to tweak SQL queries to -work in used SQL server, see :ref:`SQL Queries` for more details. +Due to limits of the ODBC interface, Gammu can not reliably detect which SQL +engine it is connected to. -Partially this can be configured using :config:option:`SQL`. +In most cases this can be solved by setting :config:option:`SQL` setting to +correct dialect. + +If that fails, you can also tweak the SQL queries to work in used SQL server, +see :ref:`SQL Queries` for more details. Still you should set +:config:option:`SQL` to closest matching SQL dialect. Configuration ------------- diff --git a/gammu-detect/CMakeLists.txt b/gammu-detect/CMakeLists.txt index 32a0f6a..ebe98b8 100644 --- a/gammu-detect/CMakeLists.txt +++ b/gammu-detect/CMakeLists.txt @@ -46,6 +46,7 @@ if (Glib_FOUND AND GObject_FOUND) add_test(gammu-detect-help "${CMAKE_CURRENT_BINARY_DIR}/gammu-detect${CMAKE_EXECUTABLE_SUFFIX}" --help) add_test(gammu-detect-version "${CMAKE_CURRENT_BINARY_DIR}/gammu-detect${CMAKE_EXECUTABLE_SUFFIX}" --version) + add_test(gammu-detect-run "${CMAKE_CURRENT_BINARY_DIR}/gammu-detect${CMAKE_EXECUTABLE_SUFFIX}") endif (Glib_FOUND AND GObject_FOUND) diff --git a/gammu-detect/bluez.c b/gammu-detect/bluez.c index cd1f9b3..3a71a6e 100644 --- a/gammu-detect/bluez.c +++ b/gammu-detect/bluez.c @@ -476,10 +476,14 @@ void bluez_detect(void) char name[248] = { 0 }; dev_id = hci_get_route(NULL); + if (dev_id < 0) { + perror("Error finding Bluetooth adapter"); + return; + } sock = hci_open_dev(dev_id); - if (dev_id < 0 || sock < 0) { - perror("opening socket"); - exit(1); + if (sock < 0) { + perror("Error opening Bluetooth socket"); + return; } len = 8; diff --git a/gammu-detect/win32-serial.c b/gammu-detect/win32-serial.c index e38a825..5c2ee14 100644 --- a/gammu-detect/win32-serial.c +++ b/gammu-detect/win32-serial.c @@ -26,7 +26,7 @@ #include "win32-serial.h" #include "main.h" -#include "../helper/string.c" +#include "../libgammu/misc/string.c" #include "../helper/locales.h" /* For gettext */ void win32_serial_detect(void) @@ -9,7 +9,7 @@ %define extension xz Name: gammu -Version: 1.38.2 +Version: 1.38.4 Release: 0 Summary: Mobile phone management utility License: GPL-2.0 diff --git a/gammu/CMakeLists.txt b/gammu/CMakeLists.txt index 3ba120e..35ca9b6 100644 --- a/gammu/CMakeLists.txt +++ b/gammu/CMakeLists.txt @@ -52,7 +52,6 @@ target_link_libraries (gammu messagedisplay) target_link_libraries (gammu messagecmdline) target_link_libraries (gammu memorydisplay) target_link_libraries (gammu printing) -target_link_libraries (gammu string) target_link_libraries (gammu cmdline) target_link_libraries (gammu ${CMAKE_THREAD_LIBS_INIT}) diff --git a/gammu/backup.c b/gammu/backup.c index 7226b87..13b1f1c 100644 --- a/gammu/backup.c +++ b/gammu/backup.c @@ -14,7 +14,7 @@ #include "../helper/message-display.h" #include "../helper/memory-display.h" #include "../helper/printing.h" -#include "../helper/string.h" +#include "../libgammu/misc/string.h" #include "../helper/cmdline.h" /** diff --git a/gammu/backupsms.c b/gammu/backupsms.c index 82ddb6a..e5f9097 100644 --- a/gammu/backupsms.c +++ b/gammu/backupsms.c @@ -14,7 +14,7 @@ #include "../helper/message-display.h" #include "../helper/printing.h" -#include "../helper/string.h" +#include "../libgammu/misc/string.h" void BackupSMS(int argc UNUSED, char *argv[]) { diff --git a/gammu/common.h b/gammu/common.h index c52ae6c..fc2ec4d 100644 --- a/gammu/common.h +++ b/gammu/common.h @@ -2,7 +2,7 @@ #define _gammu_common_h #include <gammu.h> -#include "../helper/string.h" +#include "../libgammu/misc/string.h" extern volatile gboolean gshutdown; extern GSM_StateMachine *gsm; diff --git a/gammu/depend/nokia/dct3.c b/gammu/depend/nokia/dct3.c index 87001b0..c1e2c46 100644 --- a/gammu/depend/nokia/dct3.c +++ b/gammu/depend/nokia/dct3.c @@ -14,7 +14,7 @@ #include "../../../libgammu/phone/pfunc.h" #include "../../../libgammu/service/gsmnet.h" #include "../../gammu.h" -#include "../../../helper/string.h" +#include "../../../libgammu/misc/string.h" #include "../../../helper/cmdline.h" extern GSM_Reply_Function UserReplyFunctions3[]; diff --git a/gammu/depend/nokia/dct4.c b/gammu/depend/nokia/dct4.c index a5c0877..2bb6568 100644 --- a/gammu/depend/nokia/dct4.c +++ b/gammu/depend/nokia/dct4.c @@ -15,7 +15,7 @@ #include "../../../helper/locales.h" #include "../../../helper/formats.h" -#include "../../../helper/string.h" +#include "../../../libgammu/misc/string.h" #include "../../../helper/cmdline.h" extern GSM_Reply_Function UserReplyFunctions4[]; diff --git a/gammu/files.c b/gammu/files.c index 9ddd6cb..f85a740 100644 --- a/gammu/files.c +++ b/gammu/files.c @@ -26,7 +26,7 @@ #include "../helper/formats.h" #include "../helper/printing.h" -#include "../helper/string.h" +#include "../libgammu/misc/string.h" /** * Displays status of filesystem (if available). diff --git a/gammu/gammu.c b/gammu/gammu.c index 96fd65c..d1a42df 100644 --- a/gammu/gammu.c +++ b/gammu/gammu.c @@ -26,7 +26,7 @@ #include "../helper/locales.h" #include "../helper/printing.h" -#include "../helper/string.h" +#include "../libgammu/misc/string.h" #include "../helper/cmdline.h" #ifdef DEBUG @@ -361,9 +361,8 @@ static void RunBatch(int argc, char *argv[]) * @todo Allocate memory dynamically. */ char ln[2000], token; - size_t i, len; - ssize_t pos; - int j, c = 0, argsc, n; + ssize_t pos, i, len, j; + int c = 0, argsc, n; char *argsv[20]; gboolean origbatch; char *name; @@ -808,9 +807,10 @@ void HelpGeneral(void) printf("\n"); } -void HelpSplit(int cols, int len, const char *buff) +void HelpSplit(int cols, ssize_t len, const char *buff) { - int l, len2, pos, split; + int l, pos, split; + ssize_t len2; gboolean in_opt, first = TRUE; const char *remain; char spaces[50], buffer[500]; diff --git a/gammu/memory.c b/gammu/memory.c index 6f387b8..1e20beb 100644 --- a/gammu/memory.c +++ b/gammu/memory.c @@ -12,7 +12,7 @@ #include "../helper/formats.h" #include "../helper/memory-display.h" #include "../helper/printing.h" -#include "../helper/string.h" +#include "../libgammu/misc/string.h" #include "../helper/cmdline.h" void GetAllMemory(int argc UNUSED, char *argv[]) diff --git a/gammu/message.c b/gammu/message.c index 2c8e577..5e2c61d 100644 --- a/gammu/message.c +++ b/gammu/message.c @@ -24,7 +24,7 @@ #include "../helper/memory-display.h" #include "../helper/message-cmdline.h" #include "../helper/printing.h" -#include "../helper/string.h" +#include "../libgammu/misc/string.h" #include "../helper/cmdline.h" volatile gboolean wasincomingsms = FALSE; diff --git a/gammu/misc.c b/gammu/misc.c index cbfe5c3..3665126 100644 --- a/gammu/misc.c +++ b/gammu/misc.c @@ -19,7 +19,7 @@ #include "../helper/formats.h" #include "../helper/printing.h" -#include "../helper/string.h" +#include "../libgammu/misc/string.h" #include "../helper/cmdline.h" #ifdef GSM_ENABLE_NOKIA_DCT3 @@ -398,12 +398,14 @@ void Screenshot(int argc UNUSED, char *argv[]) f = fopen(fname, "w"); if (f == NULL) { printf_err("Failed to open file: %s\n", fname); + free(fname); return; } written = fwrite(pic.Buffer, 1, pic.Length, f); ret = fclose(f); if (ret != 0 || written != pic.Length) { printf_err("Failed to write file: %s\n", fname); + free(fname); return; } diff --git a/gammu/mms.c b/gammu/mms.c index 83d9301..ae762ec 100644 --- a/gammu/mms.c +++ b/gammu/mms.c @@ -11,7 +11,7 @@ #include "../helper/memory-display.h" #include "../helper/printing.h" -#include "../helper/string.h" +#include "../libgammu/misc/string.h" void GetMMSFolders(int argc UNUSED, char *argv[] UNUSED) diff --git a/gammu/nokia.c b/gammu/nokia.c index 4a099da..8b2bac7 100644 --- a/gammu/nokia.c +++ b/gammu/nokia.c @@ -21,7 +21,7 @@ #include "../helper/formats.h" #include "../helper/printing.h" -#include "../helper/string.h" +#include "../libgammu/misc/string.h" #if defined(GSM_ENABLE_NOKIA_DCT3) || defined(GSM_ENABLE_NOKIA_DCT4) void NokiaComposer(int argc UNUSED, char *argv[]) diff --git a/gammu/search.c b/gammu/search.c index 49857f6..48932b1 100644 --- a/gammu/search.c +++ b/gammu/search.c @@ -23,7 +23,7 @@ #include "common.h" #include "../helper/formats.h" -#include "../helper/string.h" +#include "../libgammu/misc/string.h" #if defined(HAVE_WIN32_THREADS) || defined(HAVE_PTHREAD) /** diff --git a/helper/CMakeLists.txt b/helper/CMakeLists.txt index 08921b4..7ab2e28 100644 --- a/helper/CMakeLists.txt +++ b/helper/CMakeLists.txt @@ -10,14 +10,6 @@ include_directories ( "${CMAKE_CURRENT_BINARY_DIR}/../include" ) -add_library(string STATIC string.c) -add_coverage (string) -GAMMU_TUNE_SHARED(string) - -add_library(array STATIC array.c) -add_coverage (array) -GAMMU_TUNE_SHARED(array) - add_library (printing STATIC printing.c) add_coverage (printing) GAMMU_TUNE_SHARED(printing) @@ -37,7 +29,6 @@ add_coverage (messagecmdline) GAMMU_TUNE_SHARED(messagecmdline) target_link_libraries (messagecmdline libGammu) target_link_libraries (messagecmdline printing) -target_link_libraries (messagecmdline string) target_link_libraries (messagecmdline cmdline) add_library (messagedisplay STATIC message-display.c) @@ -52,15 +43,3 @@ if (LIBINTL_LIB_FOUND AND LIBINTL_LIBRARIES) target_link_libraries (printing ${LIBINTL_LIBRARIES}) include_directories (${LIBINTL_INCLUDE_DIR}) endif (LIBINTL_LIB_FOUND AND LIBINTL_LIBRARIES) - -if(WIN32 AND NOT CMAKE_COMPILER_IS_MINGW AND NOT CMAKE_COMPILER_IS_CYGWIN) - add_library(win32dirent STATIC win32-dirent.c) - add_coverage (win32dirent) -endif(WIN32 AND NOT CMAKE_COMPILER_IS_MINGW AND NOT CMAKE_COMPILER_IS_CYGWIN) - -if (NOT HAVE_STRPTIME) - add_library(strptime STATIC strptime.c) - add_coverage (strptime) - GAMMU_TUNE_SHARED(strptime) - target_link_libraries (strptime string) -endif (NOT HAVE_STRPTIME) diff --git a/helper/message-cmdline.c b/helper/message-cmdline.c index fe65024..7abde25 100644 --- a/helper/message-cmdline.c +++ b/helper/message-cmdline.c @@ -17,7 +17,7 @@ #include "formats.h" #include "printing.h" -#include "string.h" +#include "../libgammu/misc/string.h" #include "message-cmdline.h" #include "cmdline.h" diff --git a/libgammu/CMakeLists.txt b/libgammu/CMakeLists.txt index aa3c798..1f2c97e 100644 --- a/libgammu/CMakeLists.txt +++ b/libgammu/CMakeLists.txt @@ -12,8 +12,10 @@ set (LIBRARY_SRC gsmstate.c api.c debug.c + misc/array.c misc/misc.c misc/cfg.c + misc/string.c misc/coding/coding.c service/sms/gsmsms.c service/sms/gsmems.c @@ -73,6 +75,15 @@ set (LIBRARY_SRC phone/symbian/gnapgen.c phone/s60/s60phone.c) +if (NOT HAVE_STRPTIME) + list (APPEND LIBRARY_SRC misc/strptime.c) +endif (NOT HAVE_STRPTIME) + +# dirent emulation layer +if(WIN32 AND NOT CMAKE_COMPILER_IS_MINGW AND NOT CMAKE_COMPILER_IS_CYGWIN) + list (APPEND LIBRARY_SRC misc/win32-dirent.c) +endif(WIN32 AND NOT CMAKE_COMPILER_IS_MINGW AND NOT CMAKE_COMPILER_IS_CYGWIN) + # Own or glib based MD5 implementation if (Glib_FOUND) list (APPEND LIBRARY_SRC misc/coding/md5-glib.c) @@ -130,8 +141,6 @@ if(CMAKE_COMPILER_IS_MINGW AND BUILD_SHARED_LIBS) endif(CMAKE_COMPILER_IS_MINGW AND BUILD_SHARED_LIBS) -target_link_libraries (libGammu string) - if (Glib_FOUND) target_link_libraries (libGammu ${Glib_LIBRARIES} ${GObject_LIBRARIES}) include_directories(${Glib_INCLUDE_DIRS} ${GObject_INCLUDE_DIRS}) @@ -175,11 +184,6 @@ if (LIBINTL_LIB_FOUND AND LIBINTL_LIBRARIES) include_directories (${LIBINTL_INCLUDE_DIR}) endif (LIBINTL_LIB_FOUND AND LIBINTL_LIBRARIES) -# dirent emulation layer -if(WIN32 AND NOT CMAKE_COMPILER_IS_MINGW AND NOT CMAKE_COMPILER_IS_CYGWIN) - target_link_libraries (libGammu win32dirent) -endif(WIN32 AND NOT CMAKE_COMPILER_IS_MINGW AND NOT CMAKE_COMPILER_IS_CYGWIN) - # Include search path include_directories ("${CMAKE_CURRENT_BINARY_DIR}/../include") include_directories ("${CMAKE_CURRENT_SOURCE_DIR}/../common") diff --git a/libgammu/device/bluetooth/bluetooth.c b/libgammu/device/bluetooth/bluetooth.c index ba390f9..edc8948 100644 --- a/libgammu/device/bluetooth/bluetooth.c +++ b/libgammu/device/bluetooth/bluetooth.c @@ -15,7 +15,7 @@ #include "../devfunc.h" #include "bluetooth.h" -#include "../../../helper/string.h" +#include "../../../libgammu/misc/string.h" #ifdef BLUEZ_FOUND # include "bluez.h" diff --git a/libgammu/device/proxy/proxy.c b/libgammu/device/proxy/proxy.c index 6dc91e6..0b2de97 100644 --- a/libgammu/device/proxy/proxy.c +++ b/libgammu/device/proxy/proxy.c @@ -13,7 +13,7 @@ #include "../devfunc.h" #include "proxy.h" -#include "../../../helper/string.h" +#include "../../../libgammu/misc/string.h" /* Expand a proxy command */ static char * @@ -158,7 +158,7 @@ ssize_t write_nosigpipe(int fd, const void *buf, size_t len) sigset_t oldset, newset; ssize_t result; siginfo_t si; - struct timespec ts = {0}; + struct timespec ts = {0, 0}; sigemptyset(&newset); sigaddset(&newset, SIGPIPE); diff --git a/libgammu/device/serial/ser_w32.c b/libgammu/device/serial/ser_w32.c index af8608f..4593489 100644 --- a/libgammu/device/serial/ser_w32.c +++ b/libgammu/device/serial/ser_w32.c @@ -41,6 +41,7 @@ #include "../../gsmcomon.h" #include "ser_w32.h" +#include "../libgammu/misc/string.h" static GSM_Error serial_close(GSM_StateMachine *s) { @@ -189,7 +190,7 @@ static GSM_Error serial_open (GSM_StateMachine *s) #endif if ((s->ConnectionType == GCT_DKU5FBUS2) || - (!strncmp(DeviceName2,"com",3) && strlen(DeviceName2)>3)) { + (strncasecmp(DeviceName2,"com",3) == 0 && strlen(DeviceName2)>3)) { sprintf(DeviceName,"\\\\.\\COM%i",atoi(DeviceName2+3)); } else { strcpy(DeviceName,DeviceName2); diff --git a/libgammu/device/usb/usb.c b/libgammu/device/usb/usb.c index aa839b5..73a33d3 100644 --- a/libgammu/device/usb/usb.c +++ b/libgammu/device/usb/usb.c @@ -23,7 +23,7 @@ #include "../../gsmcomon.h" -#include "../../../helper/string.h" +#include "../../../libgammu/misc/string.h" /** * Nokia USB vendor ID. diff --git a/libgammu/gsmphones.c b/libgammu/gsmphones.c index 9893b94..93b4926 100644 --- a/libgammu/gsmphones.c +++ b/libgammu/gsmphones.c @@ -19,7 +19,7 @@ #include <ctype.h> -#include "../helper/string.h" +#include "../libgammu/misc/string.h" #define MAX_FEATURE_NAME_LEN 20 @@ -401,6 +401,7 @@ GSM_PhoneModel allmodels[] = { {"8800" ,"RM-13" ,"Nokia 8800", {F_PBKTONEGAL,F_TODO66,F_RADIO,F_PBKSMSLIST,F_PBKUSER,F_NOTES,F_CHAT,F_SYNCML,F_FILES2,0}}, {"8910" ,"NHM-4" ,"Nokia 8910", {F_CAL62,F_NOMIDI,F_NOFILESYSTEM,F_NOMMS,0}}, {"8910i","NHM-4" ,"Nokia 8910i",{F_CAL62,F_NOMIDI,F_NOFILESYSTEM,F_NOMMS,0}}, + {"C1" ,"RM-607", "Nokia C1", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* fixme */ {"C2-01","RM-721","Nokia C2-01", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* fixme */ {"200", "RM-761","Nokia Asha 200", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* fixme */ {"306","RM-767","Nokia Asha 306", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* fixme */ @@ -961,6 +962,7 @@ GSM_PhoneModel allmodels[] = { {"E1550", "E1550", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}}, {"E1750", "E1750", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, 0}}, {"E1752", "E1752", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, 0}}, + {"E1756", "E1756", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}}, {"E303", "E303", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}}, {"EM770W", "EM770W", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}}, {"E3372", "E3372", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}}, @@ -968,6 +970,7 @@ GSM_PhoneModel allmodels[] = { {"E372", "E372", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}}, {"E398", "E398", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}}, {"E3131", "E3131", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}}, + {"E3531", "E3531", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}}, {"K3715", "K3715", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}}, {"K3765", "K3765", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}}, {"K3770", "K3770", "", {F_SMS_LOCATION_0, F_ENCODED_USSD, F_FOUR_DIGIT_YEAR, F_RESET_AFTER_TIMEOUT, F_HUAWEI_INIT, 0}}, @@ -978,6 +981,7 @@ GSM_PhoneModel allmodels[] = { {"MF100", "MF100", "", {F_ZTE_INIT, 0}}, {"MF112", "MF112", "", {F_ZTE_INIT, 0}}, {"MF190", "MF190", "", {F_ZTE_INIT, 0}}, + {"MF626", "MF626", "", {F_ZTE_INIT, 0}}, /* Ubinetics */ {"GDC201", "GDC201", "", {F_SMS_NO_ME, 0}}, diff --git a/libgammu/gsmstate.c b/libgammu/gsmstate.c index 9761f68..96bb7ff 100644 --- a/libgammu/gsmstate.c +++ b/libgammu/gsmstate.c @@ -21,7 +21,7 @@ #include "misc/misc.h" #include "device/devfunc.h" -#include "../helper/string.h" +#include "../libgammu/misc/string.h" #if defined(HAVE_GETPWUID) && defined(HAVE_GETUID) #include <sys/types.h> diff --git a/helper/array.c b/libgammu/misc/array.c index 529a031..529a031 100644 --- a/helper/array.c +++ b/libgammu/misc/array.c diff --git a/helper/array.h b/libgammu/misc/array.h index 671ad40..671ad40 100644 --- a/helper/array.h +++ b/libgammu/misc/array.h diff --git a/libgammu/misc/cfg.c b/libgammu/misc/cfg.c index 4c46091..ee7a332 100644 --- a/libgammu/misc/cfg.c +++ b/libgammu/misc/cfg.c @@ -16,7 +16,7 @@ #include <gammu-inifile.h> #include "coding/coding.h" -#include "../../helper/string.h" +#include "../../libgammu/misc/string.h" /** * Read information from file in Windows INI format style diff --git a/helper/string.c b/libgammu/misc/string.c index 8d502b9..8d502b9 100644 --- a/helper/string.c +++ b/libgammu/misc/string.c diff --git a/helper/string.h b/libgammu/misc/string.h index 7c31457..7c31457 100644 --- a/helper/string.h +++ b/libgammu/misc/string.h diff --git a/helper/strptime.c b/libgammu/misc/strptime.c index f6bb641..f6bb641 100644 --- a/helper/strptime.c +++ b/libgammu/misc/strptime.c diff --git a/helper/strptime.h b/libgammu/misc/strptime.h index 5b61880..5b61880 100644 --- a/helper/strptime.h +++ b/libgammu/misc/strptime.h diff --git a/helper/tzfile.h b/libgammu/misc/tzfile.h index f20d657..f20d657 100644 --- a/helper/tzfile.h +++ b/libgammu/misc/tzfile.h diff --git a/helper/win32-dirent.c b/libgammu/misc/win32-dirent.c index 7b7eb25..7b7eb25 100644 --- a/helper/win32-dirent.c +++ b/libgammu/misc/win32-dirent.c diff --git a/helper/win32-dirent.h b/libgammu/misc/win32-dirent.h index d5afd5d..d5afd5d 100644 --- a/helper/win32-dirent.h +++ b/libgammu/misc/win32-dirent.h diff --git a/libgammu/phone/at/at-sms.c b/libgammu/phone/at/at-sms.c index aac34bb..7cccfb1 100644 --- a/libgammu/phone/at/at-sms.c +++ b/libgammu/phone/at/at-sms.c @@ -33,7 +33,7 @@ #include "atgen.h" #include "atfunc.h" -#include "../../../helper/string.h" +#include "../../../libgammu/misc/string.h" GSM_Error ATGEN_SetSMSC(GSM_StateMachine *s, GSM_SMSC *smsc) { diff --git a/libgammu/phone/at/atgen.c b/libgammu/phone/at/atgen.c index b267204..29ee97e 100644 --- a/libgammu/phone/at/atgen.c +++ b/libgammu/phone/at/atgen.c @@ -39,7 +39,7 @@ #include "motorola.h" #include "sonyericsson.h" -#include "../../../helper/string.h" +#include "../../../libgammu/misc/string.h" #ifdef GSM_ENABLE_ALCATEL GSM_Error ALCATEL_ProtocolVersionReply (GSM_Protocol_Message *, GSM_StateMachine *); @@ -1655,6 +1655,10 @@ GSM_Error ATGEN_ReplyGetUSSD(GSM_Protocol_Message *msg, GSM_StateMachine *s) if (error != ERR_NONE) return error; + /* Try to parse text here, we ignore error code intentionally */ + ussd.Text[0] = 0; + ussd.Text[1] = 0; + /* Decode status */ smprintf(s, "Status: %d\n", code); switch(code) { @@ -1672,18 +1676,14 @@ GSM_Error ATGEN_ReplyGetUSSD(GSM_Protocol_Message *msg, GSM_StateMachine *s) break; case 4: ussd.Status = USSD_NotSupported; - break; + return ERR_NETWORK_ERROR; case 5: ussd.Status = USSD_Timeout; - break; + return ERR_TIMEOUT; default: ussd.Status = USSD_Unknown; } - /* Try to parse text here, we ignore error code intentionally */ - ussd.Text[0] = 0; - ussd.Text[1] = 0; - error = ATGEN_ParseReply(s, pos, "+CUSD: @i, @r, @i @0", &code, @@ -4395,10 +4395,10 @@ GSM_Error ATGEN_DialService(GSM_StateMachine *s, char *number) len = strlen(number); /* - * We need to allocate twice more memory for number here, because it - * might be encoded later. + * We need to allocate four times more memory for number here, because it + * might be encoded later to UCS2. */ - allocsize = 2 * (len + 1); + allocsize = 4 * (len + 1); req = (char *)malloc(strlen(format) + allocsize + 1); if (req == NULL) { diff --git a/libgammu/phone/at/motorola.c b/libgammu/phone/at/motorola.c index c696377..974fb38 100644 --- a/libgammu/phone/at/motorola.c +++ b/libgammu/phone/at/motorola.c @@ -22,7 +22,7 @@ #include "../../service/gsmpbk.h" #include "atgen.h" #include <string.h> -#include "../../../helper/string.h" +#include "../../../libgammu/misc/string.h" typedef struct { char Command[20]; diff --git a/libgammu/phone/dummy/dummy.c b/libgammu/phone/dummy/dummy.c index e34998e..86d8d27 100644 --- a/libgammu/phone/dummy/dummy.c +++ b/libgammu/phone/dummy/dummy.c @@ -44,14 +44,14 @@ #include "../../misc/misc.h" #include "../pfunc.h" #include "dummy.h" -#include "../../../helper/string.h" +#include "../../../libgammu/misc/string.h" #ifdef WIN32 #define MKDIR(dir) _mkdir(dir) #ifndef S_ISDIR #define S_ISDIR(mode) ((mode & _S_IFDIR) == _S_IFDIR) #endif -#include "../../../helper/win32-dirent.h" +#include "../../../libgammu/misc/win32-dirent.h" #else #define MKDIR(dir) mkdir(dir, 0755) #include <dirent.h> diff --git a/libgammu/phone/dummy/dummy.h b/libgammu/phone/dummy/dummy.h index b0c1eed..92b783e 100644 --- a/libgammu/phone/dummy/dummy.h +++ b/libgammu/phone/dummy/dummy.h @@ -18,7 +18,7 @@ #include <stdio.h> #include <limits.h> #ifdef WIN32 -#include "../../../helper/win32-dirent.h" +#include "../../../libgammu/misc/win32-dirent.h" #else #include <dirent.h> #endif diff --git a/libgammu/phone/nokia/dct4s40/6510/6510file.c b/libgammu/phone/nokia/dct4s40/6510/6510file.c index fa59ea5..952c69c 100644 --- a/libgammu/phone/nokia/dct4s40/6510/6510file.c +++ b/libgammu/phone/nokia/dct4s40/6510/6510file.c @@ -16,7 +16,7 @@ #include "../../../pfunc.h" #include "../dct4func.h" #include "n6510.h" -#include "../../../../../helper/string.h" +#include "../../../../../libgammu/misc/string.h" /* shared */ @@ -2451,7 +2451,8 @@ GSM_Error N6510_DecodeFilesystemSMS(GSM_StateMachine *s, GSM_MultiSMSMessage *sm } break; case 0x07: - if (FFF->Buffer[pos + 2] != 1 || (FFF->Buffer[pos + 3] != 0x00F && FFF->Buffer[pos + 3] != 0x0e)) { + /* 07 |00 |01 |00 */ + if (FFF->Buffer[pos + 2] != 1 || (FFF->Buffer[pos + 3] != 0x0F && FFF->Buffer[pos + 3] != 0x0e && FFF->Buffer[pos + 3] != 0x00)) { unknown = TRUE; } break; diff --git a/libgammu/phone/obex/obexgen.c b/libgammu/phone/obex/obexgen.c index e6751ae..a9c47ad 100644 --- a/libgammu/phone/obex/obexgen.c +++ b/libgammu/phone/obex/obexgen.c @@ -34,7 +34,7 @@ #include "../../protocol/obex/obex.h" #include "obexfunc.h" #include "mobex.h" -#include "../../../helper/string.h" +#include "../../../libgammu/misc/string.h" #ifdef GSM_ENABLE_OBEXGEN diff --git a/libgammu/phone/s60/s60phone.c b/libgammu/phone/s60/s60phone.c index 24e3882..80496a3 100644 --- a/libgammu/phone/s60/s60phone.c +++ b/libgammu/phone/s60/s60phone.c @@ -28,7 +28,7 @@ #include "../pfunc.h" #include <string.h> -#include "../../../helper/string.h" +#include "../../../libgammu/misc/string.h" #if defined(GSM_ENABLE_S60) diff --git a/libgammu/service/backup/backtext.c b/libgammu/service/backup/backtext.c index 99d2f89..24cdd5d 100644 --- a/libgammu/service/backup/backtext.c +++ b/libgammu/service/backup/backtext.c @@ -18,7 +18,7 @@ #include "../../debug.h" #include "backtext.h" -#include "../../../helper/string.h" +#include "../../../libgammu/misc/string.h" #ifdef GSM_ENABLE_BACKUP diff --git a/libgammu/service/backup/gsmback.c b/libgammu/service/backup/gsmback.c index 7c70944..f9f0145 100644 --- a/libgammu/service/backup/gsmback.c +++ b/libgammu/service/backup/gsmback.c @@ -19,7 +19,7 @@ #include "backics.h" #include "backvnt.h" -#include "../../../helper/string.h" +#include "../../../libgammu/misc/string.h" #ifdef GSM_ENABLE_BACKUP diff --git a/libgammu/service/gsmcal.c b/libgammu/service/gsmcal.c index caeedcf..550b377 100644 --- a/libgammu/service/gsmcal.c +++ b/libgammu/service/gsmcal.c @@ -26,7 +26,7 @@ #include "gsmcal.h" #include "../misc/coding/coding.h" -#include "../../helper/string.h" +#include "../../libgammu/misc/string.h" void GSM_SetCalendarRecurranceRepeat(GSM_Debug_Info *di, unsigned char *rec, unsigned char *endday, GSM_CalendarEntry *entry) { diff --git a/libgammu/service/gsmlogo.c b/libgammu/service/gsmlogo.c index 2a292ac..93d6ed9 100644 --- a/libgammu/service/gsmlogo.c +++ b/libgammu/service/gsmlogo.c @@ -12,7 +12,7 @@ #include "gsmlogo.h" #include "gsmnet.h" -#include "../../helper/string.h" +#include "../../libgammu/misc/string.h" /** * Helper define to check error code from fwrite. diff --git a/libgammu/service/gsmmisc.c b/libgammu/service/gsmmisc.c index a255493..56ee716 100644 --- a/libgammu/service/gsmmisc.c +++ b/libgammu/service/gsmmisc.c @@ -13,7 +13,7 @@ #include "../debug.h" #include "gsmmisc.h" -#include "../../helper/string.h" +#include "../../libgammu/misc/string.h" struct keys_table_position { char whatchar; diff --git a/locale/fi/libgammu.po b/locale/fi/libgammu.po index 560226c..4566397 100644 --- a/locale/fi/libgammu.po +++ b/locale/fi/libgammu.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: libgammu 1.22.93\n" "Report-Msgid-Bugs-To: gammu-users@lists.sourceforge.net\n" "POT-Creation-Date: 2016-10-11 08:16+0200\n" -"PO-Revision-Date: 2016-12-27 06:07+0000\n" -"Last-Translator: Lari Oesch <lari@oesch.me>\n" +"PO-Revision-Date: 2017-04-27 19:31+0000\n" +"Last-Translator: Tuomas Harju <tuomas@rtj-group.com>\n" "Language-Team: Finnish " "<https://hosted.weblate.org/projects/gammu/libgammu/fi/>\n" "Language: fi\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 2.11-dev\n" +"X-Generator: Weblate 2.14-dev\n" #: libgammu/gsmcomon.c:84 msgid "No error." @@ -60,7 +60,7 @@ msgstr "Virhe asettaessa laiteen vuonohjausta DTR tai RTS." #: libgammu/gsmcomon.c:93 msgid "Error setting device speed. Maybe speed not supported." -msgstr "Virheellinen nopeus. Nopeus ei ehkä ole tuettu." +msgstr "Virhe asetettaessa nopeutta. Valittu nopeus ei ehkä ole tuettu." #: libgammu/gsmcomon.c:94 msgid "Error writing to the device." diff --git a/locale/fr/docs.po b/locale/fr/docs.po index 89f9f04..5f5bc9f 100644 --- a/locale/fr/docs.po +++ b/locale/fr/docs.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: Gammu-docs 1.38.2\n" "Report-Msgid-Bugs-To: gammu-users@lists.sourceforge.net\n" "POT-Creation-Date: 2016-10-11 13:13+0200\n" -"PO-Revision-Date: 2017-02-07 12:46+0000\n" -"Last-Translator: nvallas <nordine.vallas@gmail.com>\n" +"PO-Revision-Date: 2017-05-02 17:33+0000\n" +"Last-Translator: Kyodev <kyodev@yandex.com>\n" "Language-Team: French <https://hosted.weblate.org/projects/gammu/gammu-" "docs/fr/>\n" "Language: fr\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 2.11\n" +"X-Generator: Weblate 2.14-dev\n" #. type: Title = #: README.rst:2 @@ -66,10 +66,8 @@ msgstr ".. image" #. type: Plain text #: README.rst:16 -#, fuzzy -#| msgid "https://travis-ci.org/gammu/gammu.png?branch=master" msgid "https://travis-ci.org/gammu/gammu.svg?branch=master" -msgstr "https://travis-ci.org/gammu/gammu.png?branch=master" +msgstr "https://travis-ci.org/gammu/gammu.svg?branch=master" #. type: Plain text #: README.rst:18 @@ -78,7 +76,6 @@ msgstr ":alt: Build status :target: https://travis-ci.org/gammu/gammu" #. type: Plain text #: README.rst:20 -#, fuzzy msgid "" "https://ci.appveyor.com/api/projects/status/dkm2eam66rbhhuwn/branch/master?" "svg=true" @@ -88,19 +85,17 @@ msgstr "" #. type: Plain text #: README.rst:22 -#, fuzzy -#| msgid ":target: https://travis-ci.org/gammu/gammu" msgid "" ":alt: Windows Build status :target: https://ci.appveyor.com/project/nijel/" "gammu/branch/master" -msgstr ":target: https://travis-ci.org/gammu/gammu" +msgstr "" +":alt: Windows Build status :target: " +"https://ci.appveyor.com/project/nijel/gammu/branch/master" #. type: Plain text #: README.rst:24 -#, fuzzy -#| msgid "https://hosted.weblate.org/widgets/gammu-status-badge.png" msgid "https://hosted.weblate.org/widgets/gammu/-/svg-badge.svg" -msgstr "https://hosted.weblate.org/widgets/gammu-status-badge.png" +msgstr "https://hosted.weblate.org/widgets/gammu/-/svg-badge.svg" #. type: Plain text #: README.rst:26 @@ -108,20 +103,18 @@ msgid "" ":alt: Translation status :target: https://hosted.weblate.org/engage/gammu/?" "utm_source=widget" msgstr "" -":alt: Translation status :target: https://hosted.weblate.org/engage/gammu/?" -"utm_source=widget" +":alt: État de la traduction:target: " +"https://hosted.weblate.org/engage/gammu/?utm_source=widget" #. type: Plain text #: README.rst:28 msgid "https://scan.coverity.com/projects/2890/badge.svg?flat=1" -msgstr "" +msgstr "https://scan.coverity.com/projects/2890/badge.svg?flat=1" #. type: Plain text #: README.rst:30 -#, fuzzy -#| msgid ":alt: Bitdeli badge :target: https://bitdeli.com/free" msgid ":alt: Coverity scan :target: https://scan.coverity.com/projects/2890" -msgstr ":alt: Bitdeli badge :target: https://bitdeli.com/free" +msgstr ":alt: Coverity scan :target: https://scan.coverity.com/projects/2890" #. type: Plain text #: README.rst:32 @@ -130,10 +123,8 @@ msgstr "https://img.shields.io/gratipay/Gammu.svg" #. type: Plain text #: README.rst:34 -#, fuzzy -#| msgid ":target: https://travis-ci.org/gammu/gammu" msgid ":alt: Gratipay :target: https://gratipay.com/Gammu/" -msgstr ":target: https://travis-ci.org/gammu/gammu" +msgstr ":alt: Gratipay :target: https://gratipay.com/Gammu/" #. type: Plain text #: README.rst:36 @@ -148,19 +139,19 @@ msgid "" ":alt: Bountysource :target: https://www.bountysource.com/teams/gammu/issues?" "utm_source=Gammu&utm_medium=shield&utm_campaign=bounties_received" msgstr "" -":alt: Bountysource :target: https://www.bountysource.com/teams/gammu/issues?" +":alt: Bounty source :target: https://www.bountysource.com/teams/gammu/issues?" "utm_source=Gammu&utm_medium=shield&utm_campaign=bounties_received" #. type: Title = #: README.rst:40 -#, fuzzy, no-wrap +#, no-wrap msgid "More information" -msgstr "Information sur le téléphone" +msgstr "Plus d'informations" #. type: Plain text #: README.rst:43 msgid "You can find more information on <https://wammu.eu/gammu/>." -msgstr "" +msgstr "Vous pouvez trouver plus d'informations sur <https://wammu.eu/gammu/>." #. type: Plain text #: README.rst:47 @@ -169,12 +160,15 @@ msgid "" "version of it using make manual-html which is viewable online at <https://" "wammu.eu/docs/manual/>." msgstr "" +"Il y a aussi un manuel Gammu disponible dans docs/manual. Vous pouvez en " +"construire une version HTML en utilisant make manual-html, qui est " +"consultable en ligne à <https://wammu.eu/docs/manual/>." #. type: Title = #: README.rst:50 #, no-wrap msgid "Feedback and bug reports" -msgstr "" +msgstr "Commentaires et rapports de bugs" #. type: Plain text #: README.rst:54 @@ -182,23 +176,27 @@ msgid "" "Any feedback is welcome, see <https://wammu.eu/support/> for information how " "to contact developers." msgstr "" +"Tout commentaire est bienvenu, voir <https://wammu.eu/support/> pour savoir " +"comment contacter les développeurs." #. type: Title = #: README.rst:57 #, no-wrap msgid "Support developers" -msgstr "" +msgstr "Support des développeurs" #. type: Plain text #: README.rst:59 msgid "You can appreciate developers work at <https://wammu.eu/donate/>." msgstr "" +"Vous pouvez apprécier le travail des développeurs à " +"<https://wammu.eu/donate/>." #. type: Title = #: INSTALL:2 #, no-wrap msgid "Gammu All Mobile Management Utilities - Installation" -msgstr "Gammu All Mobile Management Utilities - Installation" +msgstr "Gammu All Mobile Management Utilitaires - Installation" #. type: Plain text #: INSTALL:5 diff --git a/locale/fr/gammu.po b/locale/fr/gammu.po index 165902d..985cd8c 100644 --- a/locale/fr/gammu.po +++ b/locale/fr/gammu.po @@ -8,15 +8,15 @@ msgstr "" "Project-Id-Version: gammu 1.22.93\n" "Report-Msgid-Bugs-To: gammu-users@lists.sourceforge.net\n" "POT-Creation-Date: 2016-10-11 08:16+0200\n" -"PO-Revision-Date: 2016-07-20 20:51+0000\n" -"Last-Translator: Nabil BENDAFI <nabil@bendafi.fr>\n" +"PO-Revision-Date: 2017-05-04 08:36+0000\n" +"Last-Translator: Kyodev <kyodev@yandex.com>\n" "Language-Team: French <https://hosted.weblate.org/projects/gammu/gammu/fr/>\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 2.8-dev\n" +"X-Generator: Weblate 2.14-dev\n" #: gammu/backup.c:49 gammu/backup.c:72 gammu/backup.c:95 gammu/backup.c:116 #: helper/message-cmdline.c:373 helper/message-cmdline.c:397 @@ -146,7 +146,7 @@ msgstr "Sauvegarder les notes du calendrier du téléphone ?" #: gammu/backup.c:905 gammu/backup.c:942 #, c-format msgid "Only part of data saved, please increase %s." -msgstr "Les données n'ont pas pu être toutes sauvées, veuillez augmenter %s." +msgstr "Seulement une partie des données sauvegardées, veuillez augmenter %s." #: gammu/backup.c:450 msgid "Checking phone todos" @@ -1146,16 +1146,12 @@ msgid "Setting done" msgstr "Réglage fait" #: gammu/depend/nokia/dct4.c:303 -#, fuzzy -#| msgid "" -#| "Sorry, but configuration matrix for this model has not yet been added. " -#| "See <http://wammu.eu/support/bugs/> for information how to report it." msgid "" "Sorry, but configuration matrix for this model has not yet been added. See " "<https://wammu.eu/support/bugs/> for information how to report it." msgstr "" "Désolé, la matrice de configuration pour ce modèle n'a pas encore été " -"ajoutée. Voir <http://wammu.eu/support/bugs/> pour toute information." +"ajoutée. Voir <https://wammu.eu/support/bugs/> pour toute information." #: gammu/depend/nokia/dct4.c:369 msgid "Passed" @@ -1220,7 +1216,7 @@ msgstr "simlock ancien" #: gammu/depend/nokia/dct4.c:845 msgid "Simlock data" -msgstr "données Simlock" +msgstr "données de Simlock" #: gammu/depend/nokia/dct4.c:872 msgid "Bluetooth" @@ -1319,9 +1315,8 @@ msgid "VCXO temperature:" msgstr "Température du VCXO : " #: gammu/depend/nokia/dct4.c:1048 -#, fuzzy msgid "Resistive keyboard 1/headint2:" -msgstr "clavier résistif 1/casque 2 :" +msgstr "Clavier résistif 1 / headint2 :" #: gammu/depend/nokia/dct4.c:1049 msgid "Resistive keyboard 1/auxdet:" @@ -1549,14 +1544,10 @@ msgid "Windows serial port probing" msgstr "Interrogation du port série Windows" #: gammu-detect/main.c:85 -#, fuzzy -#| msgid "" -#| "Copyright (C) 2010 - 2011 Michal Cihar <michal@cihar.com> and other " -#| "authors." msgid "" "Copyright (C) 2010 - 2017 Michal Cihar <michal@cihar.com> and other authors." msgstr "" -"Tous Droits reservés (C) 2010 - 2011 à Michal Cihar <michal@cihar.com> et " +"Tous Droits reservés (C) 2010 - 2017 à Michal Cihar <michal@cihar.com> et " "d'autres auteurs." #: gammu-detect/main.c:87 gammu/gammu.c:336 @@ -1577,10 +1568,8 @@ msgstr "" "Aucune garantie n'est fournie, dans la mesure de ce que la loi autorise." #: gammu-detect/main.c:91 gammu/gammu.c:344 -#, fuzzy -#| msgid "Check <http://wammu.eu/gammu/> for updates." msgid "Check <https://wammu.eu/gammu/> for updates." -msgstr "Recherchez des mises à jour sur <http://wammu.eu/gammu/> ." +msgstr "Recherchez des mises à jour sur <https://wammu.eu/gammu/> ." #: gammu-detect/main.c:100 msgid "Configuration file generated by gammu-detect." @@ -1646,20 +1635,18 @@ msgid "Phone memory" msgstr "Mémoire du téléphone" #: gammu/files.c:49 -#, fuzzy, c-format -#| msgid "%i bytes (free %i bytes, used %i bytes)" +#, c-format msgid "%ld bytes (free %ld bytes, used %ld bytes)" -msgstr "%i octets (%i octets libres, %i octets utilisés)" +msgstr "%l octets (%l octets libres, %l octets utilisés)" #: gammu/files.c:55 msgid "Usage details" msgstr "Détails d'utilisation" #: gammu/files.c:56 -#, fuzzy, c-format -#| msgid "images: %i, sounds: %i, themes: %i" +#, c-format msgid "images: %ld, sounds: %ld, themes: %ld" -msgstr "images : %i, sons : %i, thèmes : %i" +msgstr "images : %ld, sons : %ld, thèmes : %ld" #. l10n: One char to indicate protected file #: gammu/files.c:119 gammu/files.c:208 gammu/files.c:329 @@ -1823,10 +1810,6 @@ msgid "There is newer testing Gammu version available! (%s instead of %s)\n" msgstr "Il une nouvelle version de test est disponible ! (%s au lieu de %s)\n" #: gammu/gammu.c:332 -#, fuzzy -#| msgid "" -#| "Copyright (C) 2003 - 2017 Michal Cihar <michal@cihar.com> and other " -#| "authors." msgid "" "Copyright (C) 2003 - 2017 Michal Cihar <michal@cihar.com> and other authors." msgstr "" @@ -1952,9 +1935,8 @@ msgid "Phone settings" msgstr "Réglages du téléphone" #: gammu/gammu.c:772 -#, fuzzy msgid "Dumps decoding" -msgstr "Décodeur de tendance" +msgstr "Décodage des dumps" #: gammu/gammu.c:774 msgid "Functions that don't fit elsewhere" @@ -2505,12 +2487,12 @@ msgstr "SIM IMSI" #: gammu/misc.c:420 msgid "Call info" -msgstr "" +msgstr "Appel info" #: gammu/misc.c:423 #, c-format msgid "ID %i, " -msgstr "" +msgstr "ID %i, " #: gammu/misc.c:426 #, c-format @@ -2524,36 +2506,36 @@ msgstr "appel sortant vers \"%s\"\n" #: gammu/misc.c:428 msgid "call started" -msgstr "" +msgstr "appel commencé" #: gammu/misc.c:429 msgid "end of call (unknown side)" -msgstr "" +msgstr "fin de l'appel (côté inconnu)" #: gammu/misc.c:430 msgid "call end from our side" -msgstr "" +msgstr "fin d'appel de notre côté" #: gammu/misc.c:431 #, c-format msgid "call end from remote side (code %i)\n" -msgstr "" +msgstr "fin d'appel du côté distant (code %i)\n" #: gammu/misc.c:432 msgid "call established. Waiting for answer" -msgstr "" +msgstr "appel établi. En attente de réponse" #: gammu/misc.c:433 msgid "call held" -msgstr "" +msgstr "appel en suspend" #: gammu/misc.c:434 msgid "call resumed" -msgstr "" +msgstr "appel repris" #: gammu/misc.c:435 msgid "call switched" -msgstr "" +msgstr "appel commuté" #: gammu/misc.c:442 #, c-format @@ -2567,7 +2549,7 @@ msgstr "%3d libre" #: gammu/misc.c:480 msgid "Entering monitor mode..." -msgstr "" +msgstr "Passage en mode monitor..." #: gammu/misc.c:490 msgid "Enabling info about incoming SMS" @@ -2575,7 +2557,7 @@ msgstr "Activation infos SMS entrant" #: gammu/misc.c:492 msgid "Enabling info about incoming CB" -msgstr "" +msgstr "Activation d’info sur CB entrant" #: gammu/misc.c:494 msgid "Enabling info about calls" @@ -2604,7 +2586,7 @@ msgstr "%i dBm" #: gammu/misc.c:531 msgid "Network level" -msgstr "" +msgstr "Niveau du réseau" #: gammu/misc.c:536 msgid "Bit error rate" @@ -2612,7 +2594,7 @@ msgstr "Taux d'erreur" #: gammu/misc.c:544 msgid "SIM SMS status" -msgstr "" +msgstr "SIM SMS statut" #: gammu/misc.c:545 gammu/misc.c:555 #, c-format @@ -2627,36 +2609,36 @@ msgstr "%i non lu" #: gammu/misc.c:549 gammu/misc.c:559 #, c-format msgid "%i locations" -msgstr "" +msgstr "%i emplacements" #: gammu/misc.c:554 msgid "Phone SMS status" -msgstr "" +msgstr "État SMS du téléphone" #: gammu/misc.c:562 #, c-format msgid "%i templates" -msgstr "" +msgstr "%i modèles" #: gammu/misc.c:575 msgid "Leaving monitor mode..." -msgstr "" +msgstr "Quitter le mode moniteur..." #: gammu/misc.c:603 msgid "Smart Messaging" -msgstr "" +msgstr "Smart Messagerie" #: gammu/misc.c:604 msgid "Nokia binary" -msgstr "" +msgstr "Binaire Nokia" #: gammu/misc.c:605 msgid "MIDI" -msgstr "" +msgstr "MIDI" #: gammu/misc.c:606 msgid "SMAF (MMF)" -msgstr "" +msgstr "SMAF (MMF)" #: gammu/misc.c:608 #, c-format @@ -2666,7 +2648,7 @@ msgstr " format, sonnerie \"%s\"\n" #: gammu/misc.c:822 #, c-format msgid "What type of reset do you want (\"%s\") ?\n" -msgstr "" +msgstr "Quel type de réinitialisation voulez-vous (\"%s\") ?\n" #: gammu/misc.c:849 gammu/misc.c:896 helper/memory-display.c:181 #: helper/message-display.c:478 @@ -2676,29 +2658,29 @@ msgstr "Adresse" #: gammu/misc.c:891 #, c-format msgid "%i. Access point %i" -msgstr "" +msgstr "%i. Point d'accès %i" #: gammu/misc.c:893 gammu/misc.c:1411 gammu/misc.c:1418 gammu/misc.c:1453 #: gammu/misc.c:1466 gammu/misc.c:1505 gammu/misc.c:1554 gammu/misc.c:1956 msgid " (active)" -msgstr "" +msgstr " (actif)" #: gammu/misc.c:922 gammu/misc.c:1078 msgid "Maximal location for caller logo can be 5" -msgstr "" +msgstr "Location maximale pour le logo de l’appelant peut être 5" #: gammu/misc.c:935 #, c-format msgid "What type of logo do you want to get (\"%s\") ?\n" -msgstr "" +msgstr "Quel type de logo voulez vous obtenir (« %s ») ?\n" #: gammu/misc.c:951 msgid "Group name" -msgstr "" +msgstr "Nom du groupe" #: gammu/misc.c:952 gammu/misc.c:955 msgid "default" -msgstr "" +msgstr "par défaut" #: gammu/misc.c:955 gammu/misc.c:957 gammu/misc.c:970 gammu/misc.c:977 #: helper/memory-display.c:104 @@ -2708,27 +2690,27 @@ msgstr "Sonnerie" #: gammu/misc.c:971 #, c-format msgid "(file with ID %i)\n" -msgstr "" +msgstr "(fichier avec ID %i)\n" #. l10n: Ringtone name and ID format #: gammu/misc.c:981 gammu/misc.c:1975 #, c-format msgid "\"%s\" (ID %i)\n" -msgstr "" +msgstr "\"%s\" (ID %i)\n" #. l10n: Ringtone ID format #: gammu/misc.c:984 gammu/misc.c:1978 #, c-format msgid "ID %i\n" -msgstr "" +msgstr "ID %i\n" #: gammu/misc.c:990 gammu/misc.c:992 msgid "Bitmap" -msgstr "" +msgstr "Bitmap" #: gammu/misc.c:990 gammu/misc.c:1513 gammu/misc.c:1516 gammu/mms.c:102 msgid "enabled" -msgstr "" +msgstr "activé" #: gammu/misc.c:992 gammu/misc.c:1514 gammu/misc.c:1517 gammu/mms.c:104 msgid "disabled" @@ -2736,11 +2718,11 @@ msgstr "désactivé" #: gammu/misc.c:995 msgid "Bitmap ID" -msgstr "" +msgstr "Bitmap ID" #: gammu/misc.c:1008 msgid "No operator logo in phone" -msgstr "" +msgstr "Pas de logo de l'opérateur dans le téléphone" #: gammu/misc.c:1014 gammu/mms.c:71 helper/message-display.c:476 msgid "Sender" @@ -2749,17 +2731,17 @@ msgstr "Expediteur" #: gammu/misc.c:1020 #, c-format msgid "Welcome note text is \"%s\"\n" -msgstr "" +msgstr "Le texte de la note de bienvenue est « %s »\n" #: gammu/misc.c:1023 #, c-format msgid "Dealer note text is \"%s\"\n" -msgstr "" +msgstr "Le texte de la note du marchand est « %s »\n" #: gammu/misc.c:1161 #, c-format msgid "What type of logo do you want to set (\"%s\") ?\n" -msgstr "" +msgstr "Quel type de logo vous voulez définir (« %s ») ?\n" #: gammu/misc.c:1198 #, c-format @@ -2768,7 +2750,7 @@ msgstr "Paramètre inconnu (%s)" #: gammu/misc.c:1279 msgid "Delete phone phonebook?" -msgstr "" +msgstr "Supprimer le répertoire de téléphone ?" #: gammu/misc.c:1280 msgid "Delete SIM phonebook?" @@ -2780,31 +2762,31 @@ msgstr "Effacer appels manqués ?" #: gammu/misc.c:1282 msgid "Delete dialled calls?" -msgstr "" +msgstr "Supprimer les appels composés ?" #: gammu/misc.c:1283 msgid "Delete received calls?" -msgstr "" +msgstr "Supprimer les appels reçus ?" #: gammu/misc.c:1288 msgid "Delete phone calendar notes?" -msgstr "" +msgstr "Supprimer les notes de calendrier du téléphone ?" #: gammu/misc.c:1312 msgid "Delete phone todos?" -msgstr "" +msgstr "Supprimer les tâches du téléphone ?" #: gammu/misc.c:1336 msgid "Delete phone notes?" -msgstr "" +msgstr "Supprimer les notes du téléphone ?" #: gammu/misc.c:1354 msgid "Delete phone WAP bookmarks?" -msgstr "" +msgstr "Supprimer les favoris WAP du téléphone ?" #: gammu/misc.c:1381 msgid "Delete all phone FM radio stations?" -msgstr "" +msgstr "Supprimer toutes les stations de radio FM du téléphone ?" #: gammu/misc.c:1393 gammu/misc.c:1395 msgid "Connection type" @@ -2812,72 +2794,72 @@ msgstr "Type de connexion" #: gammu/misc.c:1393 msgid "Continuous" -msgstr "" +msgstr "Continu" #: gammu/misc.c:1395 msgid "Temporary" -msgstr "" +msgstr "Temporaire" #: gammu/misc.c:1398 gammu/misc.c:1400 msgid "Connection security" -msgstr "" +msgstr "Sécurité de connexion" #: gammu/misc.c:1398 gammu/misc.c:2052 msgid "On" -msgstr "" +msgstr "Allumer" #: gammu/misc.c:1400 gammu/misc.c:2038 msgid "Off" -msgstr "" +msgstr "Éteindre" #: gammu/misc.c:1402 msgid "Proxy" -msgstr "" +msgstr "Proxy" #: gammu/misc.c:1403 gammu/misc.c:1406 #, c-format msgid "address \"%s\", port %i" -msgstr "" +msgstr "adresse \"%s\", port %i" #: gammu/misc.c:1405 msgid "Second proxy" -msgstr "" +msgstr "Proxy secondaire" #: gammu/misc.c:1410 gammu/misc.c:1417 gammu/misc.c:1452 gammu/misc.c:1465 msgid "Bearer" -msgstr "" +msgstr "Titulaire" #: gammu/misc.c:1410 msgid "SMS" -msgstr "" +msgstr "SMS" #: gammu/misc.c:1413 msgid "Server number" -msgstr "" +msgstr "Numéro de serveur" #: gammu/misc.c:1414 gammu/misc.c:1460 gammu/misc.c:1461 msgid "Service number" -msgstr "" +msgstr "Numéro de service" #: gammu/misc.c:1417 msgid "Data (CSD)" -msgstr "" +msgstr "Données (CSD)" #: gammu/misc.c:1420 msgid "Dial-up number" -msgstr "" +msgstr "Numéro à composer" #: gammu/misc.c:1421 gammu/misc.c:1457 gammu/misc.c:1458 gammu/misc.c:1479 msgid "IP address" -msgstr "" +msgstr "Adresse IP" #: gammu/misc.c:1423 gammu/misc.c:1425 gammu/misc.c:1469 gammu/misc.c:1471 msgid "Login type" -msgstr "" +msgstr "Type de connexion" #: gammu/misc.c:1423 gammu/misc.c:1469 msgid "Manual" -msgstr "" +msgstr "Manuel" #: gammu/misc.c:1425 gammu/misc.c:1471 msgid "Automatic" @@ -2885,7 +2867,7 @@ msgstr "Automatique" #: gammu/misc.c:1428 gammu/misc.c:1430 gammu/misc.c:1474 gammu/misc.c:1476 msgid "Authentication type" -msgstr "" +msgstr "Type d’authentification" #: gammu/misc.c:1428 gammu/misc.c:1474 msgid "Normal" @@ -2893,31 +2875,31 @@ msgstr "Normal" #: gammu/misc.c:1430 gammu/misc.c:1476 msgid "Secure" -msgstr "" +msgstr "Sûr" #: gammu/misc.c:1433 gammu/misc.c:1435 msgid "Data call type" -msgstr "" +msgstr "Type d’appel données" #: gammu/misc.c:1433 msgid "ISDN" -msgstr "" +msgstr "RNIS" #: gammu/misc.c:1435 msgid "Analogue" -msgstr "" +msgstr "Analogique" #: gammu/misc.c:1439 gammu/misc.c:1442 gammu/misc.c:1445 msgid "Data call speed" -msgstr "" +msgstr "Vitesse d’appel données" #: gammu/misc.c:1445 gammu/misc.c:2054 msgid "Auto" -msgstr "" +msgstr "Automatique" #: gammu/misc.c:1448 gammu/misc.c:1480 msgid "User name" -msgstr "" +msgstr "Nom d'utilisateur" #: gammu/misc.c:1449 gammu/misc.c:1481 gammu/misc.c:1508 gammu/misc.c:1558 msgid "Password" @@ -2925,37 +2907,37 @@ msgstr "Mot de passe" #: gammu/misc.c:1452 msgid "USSD" -msgstr "" +msgstr "USSD" #: gammu/misc.c:1455 msgid "Service code" -msgstr "" +msgstr "Code de service" #: gammu/misc.c:1457 gammu/misc.c:1460 msgid "Address type" -msgstr "" +msgstr "Type d'adresse" #: gammu/misc.c:1478 msgid "Access point" -msgstr "" +msgstr "Point d'accès" #: gammu/misc.c:1501 gammu/misc.c:1522 gammu/misc.c:1550 gammu/misc.c:1563 #: gammu/misc.c:1595 #, c-format msgid "Set %i" -msgstr "" +msgstr "Définir %i" #: gammu/misc.c:1507 gammu/misc.c:1557 msgid "User" -msgstr "" +msgstr "Utilisateur" #: gammu/misc.c:1509 msgid "Phonebook database" -msgstr "" +msgstr "Base de données du répertoire téléphonique" #: gammu/misc.c:1510 msgid "Calendar database" -msgstr "" +msgstr "Base de données du calendrier" #: gammu/misc.c:1511 msgid "Server" @@ -2963,15 +2945,15 @@ msgstr "Serveur" #: gammu/misc.c:1512 msgid "Sync. phonebook" -msgstr "" +msgstr "Synchronisation du répertoire du téléphone" #: gammu/misc.c:1515 msgid "Sync. calendar" -msgstr "" +msgstr "Synchronisation du calendrier" #: gammu/misc.c:1520 gammu/misc.c:1561 msgid "Connection set name" -msgstr "" +msgstr "Nom du jeu de connexions" #: gammu/misc.c:1556 gammu/misc.c:1606 msgid "Homepage" @@ -2979,27 +2961,27 @@ msgstr "Page d'accueil" #: gammu/misc.c:1600 msgid "active" -msgstr "" +msgstr "actif" #: gammu/misc.c:1604 msgid "Read only" -msgstr "" +msgstr "Lecture seule" #: gammu/misc.c:1629 msgid "Startup logo" -msgstr "" +msgstr "Logo du démarrage" #: gammu/misc.c:1630 msgid "Operator logo" -msgstr "" +msgstr "Logo de l'opérateur" #: gammu/misc.c:1631 helper/message-display.c:443 msgid "Picture" -msgstr "" +msgstr "Photo" #: gammu/misc.c:1632 msgid "Caller group logo" -msgstr "" +msgstr "Logo du groupe appelant" #: gammu/misc.c:1635 #, c-format @@ -3009,46 +2991,46 @@ msgstr ", largeur %i, hauteur %i\n" #: gammu/misc.c:1652 #, c-format msgid "What format of output file logo (\"%s\") ?\n" -msgstr "" +msgstr "Quel format du fichier de logo sortant (\"%s\") ?\n" #: gammu/misc.c:1677 #, c-format msgid "What format of output ringtone file (\"%s\") ?\n" -msgstr "" +msgstr "Quel est le format du fichier de sonnerie sortante (« %s ») ?\n" #: gammu/misc.c:1699 -#, fuzzy, c-format +#, c-format msgid "What type of power do you want (\"%s\") ?\n" -msgstr "Que dois -je faire (\"%s\") ?\n" +msgstr "Quel type de puissance voulez-vous (\"%s\")?\n" #: gammu/misc.c:1719 #, c-format msgid "Unknown key/function name: \"%c\"\n" -msgstr "" +msgstr "Nom de la clé/fonction inconnu : \"%c\"\n" #: gammu/misc.c:1749 gammu/misc.c:1787 #, c-format msgid "What type of categories do you want to get (\"%s\") ?\n" -msgstr "" +msgstr "Quel type de catégories voulez vous obtenir (\"%s\") ?\n" #: gammu/misc.c:1825 #, c-format msgid "What type of category do you want to add (\"%s\") ?\n" -msgstr "" +msgstr "Quel type de catégorie vous voulez ajouter (\"%s\") ?\n" #: gammu/misc.c:1833 #, c-format msgid "Text too long, truncating to %d chars!\n" -msgstr "" +msgstr "Texte trop long, tronquer à %d caractères !\n" #: gammu/misc.c:1872 msgid "Invalid security code type" -msgstr "" +msgstr "Type de code de sécurité invalide" #: gammu/misc.c:1877 #, c-format msgid "Enter %s code: " -msgstr "" +msgstr "Entrez le code de %s : " #: gammu/misc.c:1889 gammu/misc.c:1911 msgid "No PIN code entered!" @@ -3065,115 +3047,115 @@ msgstr " (Nom par défaut)" #: gammu/misc.c:1958 msgid " (Head set profile)" -msgstr "" +msgstr " (Profil des écouteurs)" #: gammu/misc.c:1959 msgid " (Car kit profile)" -msgstr "" +msgstr " (Profil du kit voiture)" #: gammu/misc.c:1968 helper/memory-display.c:109 msgid "Ringtone ID" -msgstr "" +msgstr "Sonnerie ID" #: gammu/misc.c:1970 msgid "Message alert tone ID" -msgstr "" +msgstr "ID tonalité d’alerte de message" #: gammu/misc.c:1983 msgid "Call alert for" -msgstr "" +msgstr "Alerte d'appel pour" #: gammu/misc.c:2004 msgid "Screen saver number" -msgstr "" +msgstr "Numéro d'écran de veille" #: gammu/misc.c:2007 msgid "Incoming call alert" -msgstr "" +msgstr "Alerte d'appel entrant" #: gammu/misc.c:2008 msgid "Ringtone volume" -msgstr "" +msgstr "Volume de la sonnerie" #: gammu/misc.c:2009 msgid "Vibrating alert" -msgstr "" +msgstr "Alerte vibrante" #: gammu/misc.c:2010 msgid "Message alert tone" -msgstr "" +msgstr "Tonalité d’alerte message" #: gammu/misc.c:2011 msgid "Keypad tones" -msgstr "" +msgstr "Bips touches" #: gammu/misc.c:2012 msgid "Warning (games) tones" -msgstr "" +msgstr "Tonalités d’avertissement (jeux)" #: gammu/misc.c:2013 helper/message-display.c:439 msgid "Screen saver" -msgstr "" +msgstr "Économiseur d’écran" #: gammu/misc.c:2014 msgid "Screen saver timeout" -msgstr "" +msgstr "Délai d'attente de l'écran de veille" #: gammu/misc.c:2015 msgid "Automatic answer" -msgstr "" +msgstr "Réponse automatique" #: gammu/misc.c:2016 msgid "Lights" -msgstr "" +msgstr "Lumières" #: gammu/misc.c:2024 msgid "Level 1" -msgstr "" +msgstr "Niveau 1" #: gammu/misc.c:2026 msgid "Level 2" -msgstr "" +msgstr "Niveau 2" #: gammu/misc.c:2028 msgid "Level 3" -msgstr "" +msgstr "Niveau 3" #: gammu/misc.c:2029 msgid "Level 4" -msgstr "" +msgstr "Niveau 4" #: gammu/misc.c:2030 msgid "Level 5" -msgstr "" +msgstr "Niveau 5" #: gammu/misc.c:2039 msgid "Ringing" -msgstr "" +msgstr "Sonnerie" #: gammu/misc.c:2041 msgid "Beep once" -msgstr "" +msgstr "Bip une fois" #: gammu/misc.c:2042 msgid "Ring once" -msgstr "" +msgstr "Sonne une fois" #: gammu/misc.c:2043 gammu/misc.c:2047 msgid "Ascending" -msgstr "" +msgstr "Ascendant" #: gammu/misc.c:2044 msgid "Caller groups" -msgstr "" +msgstr "Groupes d'appel" #: gammu/misc.c:2045 msgid "Standard" -msgstr "" +msgstr "Standard" #: gammu/misc.c:2046 msgid "Special" -msgstr "" +msgstr "Spécial" #: gammu/misc.c:2048 msgid "Personal" @@ -3181,174 +3163,177 @@ msgstr "Personnel" #: gammu/misc.c:2053 msgid "Vibrate first" -msgstr "" +msgstr "Vibrer en premier" #: gammu/misc.c:2090 msgid " speed dial not assigned" -msgstr "" +msgstr " vitesse de composition non assignée" #: gammu/misc.c:2122 #, c-format msgid "What type of reset phone settings (\"%s\") ?\n" -msgstr "" +msgstr "Quel type de paramètres de réinitialisation téléphone (\"%s\") ?\n" #: gammu/misc.c:2156 msgid "Currently shown on the display" -msgstr "" +msgstr "Actuellement affiché sur l'écran" #: gammu/misc.c:2161 msgid "Call active" -msgstr "" +msgstr "Appel actif" #: gammu/misc.c:2164 msgid "Unread SMS" -msgstr "" +msgstr "SMS non lus" #: gammu/misc.c:2167 msgid "Voice call" -msgstr "" +msgstr "Appel vocal" #: gammu/misc.c:2170 msgid "Fax call" -msgstr "" +msgstr "Appel de télécopie" #: gammu/misc.c:2173 msgid "Data call" -msgstr "" +msgstr "Appel données" #: gammu/misc.c:2176 msgid "Keypad locked" -msgstr "" +msgstr "Clavier verrouillé" #: gammu/misc.c:2179 msgid "SMS memory full" -msgstr "" +msgstr "Mémoire SMS pleine" #: gammu/misc.c:2217 msgid "Station name" -msgstr "" +msgstr "Nom de la station" #: gammu/misc.c:2218 msgid "Frequency" -msgstr "" +msgstr "Fréquence" #: gammu/misc.c:2240 #, c-format msgid "Unknown divert action (\"%s\")\n" -msgstr "" +msgstr "Action de renvoi inconnu (\"%s\")\n" #: gammu/misc.c:2253 #, c-format msgid "Unknown divert type (\"%s\")\n" -msgstr "" +msgstr "Type de renvoi inconnu (\"%s\")\n" #: gammu/misc.c:2266 #, c-format msgid "Unknown call type (\"%s\")\n" -msgstr "" +msgstr "Type d’appel inconnu (\"%s\")\n" #: gammu/misc.c:2275 msgid "Query:" -msgstr "" +msgstr "Requête :" #: gammu/misc.c:2291 msgid "Changed:" -msgstr "" +msgstr "Modifié :" #: gammu/misc.c:2294 gammu/misc.c:2341 msgid "Divert type" -msgstr "" +msgstr "Type de renvoi" #: gammu/misc.c:2298 gammu/misc.c:2345 msgid "when busy" -msgstr "" +msgstr "si occupé" #: gammu/misc.c:2301 gammu/misc.c:2348 msgid "when not answered" -msgstr "" +msgstr "si pas de réponse" #: gammu/misc.c:2304 gammu/misc.c:2351 msgid "when phone off or no coverage" -msgstr "" +msgstr "si téléphone éteint ou hors couverture" #: gammu/misc.c:2307 gammu/misc.c:2354 msgid "all types of diverts" -msgstr "" +msgstr "tous les types de renvois" #: gammu/misc.c:2310 gammu/misc.c:2330 gammu/misc.c:2357 gammu/misc.c:2373 #, c-format msgid "unknown %i" -msgstr "" +msgstr "inconnu %i" #: gammu/misc.c:2315 gammu/misc.c:2361 msgid "Call type" -msgstr "" +msgstr "Type d'appel" #: gammu/misc.c:2318 gammu/misc.c:2364 msgid "voice" -msgstr "" +msgstr "voix" #: gammu/misc.c:2321 gammu/misc.c:2367 helper/message-display.c:115 msgid "fax" -msgstr "" +msgstr "télécopie" #: gammu/misc.c:2324 gammu/misc.c:2370 msgid "data" -msgstr "" +msgstr "données" #: gammu/misc.c:2327 msgid "data & fax & voice" -msgstr "" +msgstr "données & télécopie & voix" #: gammu/misc.c:2336 msgid "Response:" -msgstr "" +msgstr "Réponse :" #: gammu/misc.c:2416 msgid "The application has been successfully sent to the phone." -msgstr "" +msgstr "L'application a été envoyée avec succès au téléphone." #: gammu/misc.c:2417 msgid "Please find received files in Inbox and install them." msgstr "" +"Veuillez trouver les fichiers reçus dans la boîte de réception et les " +"installer." #: gammu/mms.c:49 msgid "Do you want to save this MMS file?" -msgstr "" +msgstr "Voulez-vous enregistrer ce fichier MMS ?" #: gammu/mms.c:53 gammu/mms.c:134 #, c-format msgid "Error while saving to file %s!\n" -msgstr "" +msgstr "Erreur lors de l'enregistrement dans le fichier %s!\n" #: gammu/mms.c:55 gammu/mms.c:136 #, c-format msgid "Saved to file %s\n" -msgstr "" +msgstr "Enregistré dans le fichier %s\n" #: gammu/mms.c:65 msgid "Some MMS file features unknown for Gammu decoder" msgstr "" +"Certaines fonctionnalités de fichiers MMS inconnues pour le décodeur Gammu" #: gammu/mms.c:73 gammu/mms.c:81 gammu/mms.c:89 msgid "phone " -msgstr "" +msgstr "téléphone " #: gammu/mms.c:79 msgid "Recipient" -msgstr "" +msgstr "Destinataire" #: gammu/mms.c:87 msgid "CC" -msgstr "" +msgstr "CC" #: gammu/mms.c:94 msgid "Message type" -msgstr "" +msgstr "Type de message" #: gammu/mms.c:97 helper/message-display.c:477 msgid "Subject" -msgstr "" +msgstr "Objet" #: gammu/mms.c:100 msgid "Delivery report" @@ -3356,84 +3341,89 @@ msgstr "Compte rendu de livraison" #: gammu/mms.c:107 gammu/mms.c:110 msgid "Content type" -msgstr "" +msgstr "Type de contenu" #: gammu/mms.c:114 #, c-format msgid " (%s in SMIL)" -msgstr "" +msgstr " (%s dans SMIL)" #: gammu/mms.c:130 msgid "Do you want to save this attachment?" -msgstr "" +msgstr "Vous voulez enregistrer cette pièce jointe ?" #: gammu/mms.c:171 #, c-format msgid "Folder %s\n" -msgstr "" +msgstr "Dossier %s\n" #: gammu/mms.c:172 msgid " File filesystem ID" -msgstr "" +msgstr " ID du système de fichiers du fichier" #: gammu/nokia.c:43 msgid "It can be RTTL ringtone only used with this option" msgstr "" +"Il ne peut être utilisé seulement qu'une sonnerie RTTL avec cette option" #: gammu/nokia.c:54 #, c-format msgid "Ringtone \"%s\" (tempo = %i Beats Per Minute)" -msgstr "" +msgstr "Sonnerie \"%s\" (tempo = %i Battement Par Minute)" #: gammu/nokia.c:63 #, c-format msgid "length=%i notes, but you will enter only first 50 tones." msgstr "" +"longueur=%i notes, mais vous entrerez seulement les 50 premières tonalités." #: gammu/nokia.c:66 msgid "This ringtone in Nokia Composer in phone should look:" msgstr "" +"Cette sonnerie dans Nokia Composer devrait ressembler dans le téléphone à :" #: gammu/nokia.c:107 msgid "To enter it please press:" -msgstr "" +msgstr "Pour entrer veuillez appuyez sur :" #: gammu/nokia.c:126 msgid "(longer)" -msgstr "" +msgstr "(plus long)" #: gammu/nokia.c:254 #, c-format msgid "Checking %s\n" -msgstr "" +msgstr "Vérification de %s\n" #: gammu/nokia.c:259 msgid " Only part handled!" -msgstr "" +msgstr " Seule partie traitée !" #: gammu/nokia.c:342 msgid " Problem with adding playlist" -msgstr "" +msgstr " Problème avec l’ajout de la playliste" #: gammu/nokia.c:389 #, c-format msgid "Writing file %s:" -msgstr "" +msgstr "Écriture du fichier %s :" #: gammu/nokia.c:442 msgid "" "Your phone model is not supported. Please report it to authors (see <https://" "wammu.eu/support/bugs/>). Thank you." msgstr "" +"Le modèle de votre téléphone n’est pas pris en charge. Veuillez le signaler " +"aux auteurs (voir <https://wammu.eu/support/bugs/>). Merci." #: gammu/nokia.c:458 msgid "Problem with deleting playlist" -msgstr "" +msgstr "Problème avec la suppression de la playliste" #: gammu/nokia.c:554 #, c-format msgid "What folder type (\"%s\") ?\n" -msgstr "" +msgstr "Quel type de dossier (\"%s\") ?\n" #: gammu/nokia.c:562 gammu/nokia.c:569 gammu/nokia.c:576 #, c-format @@ -3442,11 +3432,11 @@ msgstr "Impossible d'ouvrir le fichier %s\n" #: gammu/nokia.c:597 gammu/nokia.c:671 msgid "Folder not found. Probably function not supported!" -msgstr "" +msgstr "Dossier non trouvé. Probablement fonction non prise en charge !" #: gammu/nokia.c:620 msgid "Searching for phone folder: " -msgstr "" +msgstr "Recherche du dossier de téléphone : " #: gammu/nokia.c:697 msgid "No vendor info in JAD file!" @@ -3458,60 +3448,61 @@ msgstr "Pas d'infos de nom dans le fichier JAD !" #: gammu/nokia.c:707 msgid "No JAR URL info in JAD file!" -msgstr "" +msgstr "Aucune info JAR URL dans le fichier JAD !" #: gammu/nokia.c:713 msgid "Declared JAR file size is different than real. Fixed by Gammu." msgstr "" +"Taille de fichier JAR déclarée différente de la réelle. Corrigé par Gammu." #: gammu/nokia.c:737 msgid "No JAR size info in JAD file. Added by Gammu." -msgstr "" +msgstr "Aucune info de taille de fichier JAR. Ajouté par Gammu." #: gammu/nokia.c:746 #, c-format msgid "Adding \"%s\"" -msgstr "" +msgstr "Ajout de \"%s\"" #: gammu/nokia.c:747 #, c-format msgid " version %s" -msgstr "" +msgstr " version %s" #: gammu/nokia.c:748 #, c-format msgid " created by %s\n" -msgstr "" +msgstr " créé par %s\n" #: gammu/nokia.c:799 gammu/nokia.c:851 msgid "Application already exists. Deleting by Gammu." -msgstr "" +msgstr "Application déjà existe. Suppression par Gammu." #: gammu/nokia.c:832 gammu/nokia.c:865 #, c-format msgid " Deleting %s\n" -msgstr "" +msgstr " Suppression de %s\n" #: gammu/nokia.c:888 msgid "Writing JAD file:" -msgstr "" +msgstr "Écriture du fichier JAD :" #: gammu/nokia.c:907 msgid "Writing JAR file:" -msgstr "" +msgstr "Écriture du fichier JAR :" #: gammu/nokia.c:982 msgid "Writing file:" -msgstr "" +msgstr "Écriture du fichier :" #: gammu/search.c:145 #, c-format msgid "Connection \"%s\" on device \"%s\"\n" -msgstr "" +msgstr "Connexion \"%s\" sur le périphérique \"%s\"\n" #: gammu/search.c:182 gammu/search.c:189 msgid "Error creating thread\n" -msgstr "" +msgstr "Erreur de création du fil\n" #: helper/cmdline.c:26 #, c-format @@ -3521,104 +3512,106 @@ msgstr "Nombre en dehors de la plage: %s\n" #: helper/cmdline.c:31 #, c-format msgid "Parameter is not a number: %s\n" -msgstr "" +msgstr "Paramètre n’est pas un nombre : %s\n" #: helper/formats.h:2 #, c-format msgid "%d second" msgid_plural "%d seconds" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d seconde" +msgstr[1] "%d secondes" #: helper/formats.h:3 #, c-format msgid "%d minute" msgid_plural "%d minutes" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d minute" +msgstr[1] "%d minutes" #: helper/formats.h:4 #, c-format msgid "%d hour" msgid_plural "%d hours" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d heure" +msgstr[1] "%d heures" #: helper/formats.h:5 #, c-format msgid "%d day" msgid_plural "%d days" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d jour" +msgstr[1] "%d jours" #: helper/formats.h:6 #, c-format msgid "%d week" msgid_plural "%d weeks" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d semaine" +msgstr[1] "%d semaines" #: helper/formats.h:7 #, c-format msgid "%d year" msgid_plural "%d years" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d année" +msgstr[1] "%d années" #: helper/memory-display.c:30 msgid "Call length" -msgstr "" +msgstr "Durée de l'appel" #. l10n: Call length format string hour:minute:second #: helper/memory-display.c:32 #, c-format msgid "%02i:%02i:%02i\n" -msgstr "" +msgstr "%02i:%02i:%02i\n" #: helper/memory-display.c:38 msgid "Date and time" -msgstr "" +msgstr "Date et heure" #: helper/memory-display.c:66 helper/memory-display.c:70 #: helper/memory-display.c:79 helper/memory-display.c:90 msgid "Caller group" -msgstr "" +msgstr "Groupe d’appel" #: helper/memory-display.c:71 msgid "Caller group number too high, please increase buffer in sources!" msgstr "" +"Groupe d'appel, nombre trop élevé, veuillez augmenter le tampon dans les " +"sources !" #: helper/memory-display.c:113 msgid "User ID" -msgstr "" +msgstr "ID utilisateur" #: helper/memory-display.c:116 msgid "Picture name" -msgstr "" +msgstr "Nom de l’image" #: helper/memory-display.c:119 msgid "Picture ID" -msgstr "" +msgstr "ID photo" #: helper/memory-display.c:122 msgid "Photo" -msgstr "" +msgstr "Photo" #: helper/memory-display.c:122 msgid "Displaying not supported" -msgstr "" +msgstr "Affichage non pris en charge" #: helper/memory-display.c:124 msgid "Favorite messaging number" -msgstr "" +msgstr "Numéro de messagerie préféré" #: helper/memory-display.c:132 msgid "Work number" -msgstr "" +msgstr "Numéro professionnel" #: helper/memory-display.c:135 msgid "General number" -msgstr "" +msgstr "Numéro général" #: helper/memory-display.c:139 msgid "Video number" @@ -3626,7 +3619,7 @@ msgstr "Numéro de la vidéo" #: helper/memory-display.c:144 msgid "Home mobile number" -msgstr "" +msgstr "Numéro de téléphone portable" #: helper/memory-display.c:147 msgid "Work mobile number" @@ -3634,19 +3627,19 @@ msgstr "Numéro de téléphone du portable au travail" #: helper/memory-display.c:158 msgid "Home fax number" -msgstr "" +msgstr "Numéro de fax domicile" #: helper/memory-display.c:161 msgid "Work fax number" -msgstr "" +msgstr "Numéro de fax professionnel" #: helper/memory-display.c:168 msgid "Pager number" -msgstr "" +msgstr "Numéro de pager" #: helper/memory-display.c:169 msgid "Other number" -msgstr "" +msgstr "Autre numéro" #: helper/memory-display.c:175 msgid "Home address" @@ -3666,7 +3659,7 @@ msgstr "Courriel au travail" #: helper/memory-display.c:199 msgid "Email address 2" -msgstr "" +msgstr "Adresse email 2" #: helper/memory-display.c:204 msgid "Home website" @@ -3682,15 +3675,15 @@ msgstr "Site Internet" #: helper/memory-display.c:215 msgid "VOIP" -msgstr "" +msgstr "VOIP" #: helper/memory-display.c:216 msgid "SWIS" -msgstr "" +msgstr "SWIS" #: helper/memory-display.c:217 msgid "WVID" -msgstr "" +msgstr "WVID" #: helper/memory-display.c:218 msgid "SIP" @@ -3698,15 +3691,15 @@ msgstr "SIP" #: helper/memory-display.c:219 msgid "DTMF" -msgstr "" +msgstr "DTMF" #: helper/memory-display.c:221 msgid "Last name" -msgstr "" +msgstr "Nom de famille" #: helper/memory-display.c:222 msgid "First name" -msgstr "" +msgstr "Prénom" #: helper/memory-display.c:223 msgid "Second name" @@ -3714,7 +3707,7 @@ msgstr "Deuxième nom" #: helper/memory-display.c:224 msgid "Formal name" -msgstr "" +msgstr "Nom officiel" #: helper/memory-display.c:225 msgid "Name prefix" @@ -3722,27 +3715,27 @@ msgstr "Préfixe de nom" #: helper/memory-display.c:226 msgid "Name suffix" -msgstr "" +msgstr "Suffixe de nom" #: helper/memory-display.c:227 msgid "Nick name" -msgstr "" +msgstr "Pseudo" #: helper/memory-display.c:228 msgid "Company" -msgstr "" +msgstr "Société" #: helper/memory-display.c:229 msgid "Job title" -msgstr "" +msgstr "Intitulé de poste" #: helper/memory-display.c:230 msgid "Street address" -msgstr "" +msgstr "Nom de rue" #: helper/memory-display.c:231 msgid "City" -msgstr "" +msgstr "Ville" #: helper/memory-display.c:232 msgid "State" @@ -3750,106 +3743,108 @@ msgstr "État" #: helper/memory-display.c:233 msgid "Zip code" -msgstr "" +msgstr "Code postal" #: helper/memory-display.c:234 msgid "Country" -msgstr "" +msgstr "Pays" #: helper/memory-display.c:235 msgid "Custom text 1" -msgstr "" +msgstr "Texte personnalisé 1" #: helper/memory-display.c:236 msgid "Custom text 2" -msgstr "" +msgstr "Texte personnalisé 2" #: helper/memory-display.c:237 msgid "Custom text 3" -msgstr "" +msgstr "Texte personnalisé 3" #: helper/memory-display.c:238 msgid "Custom text 4" -msgstr "" +msgstr "Texte personnalisé 4" #: helper/memory-display.c:239 msgid "Push to talk ID" -msgstr "" +msgstr "ID Push to Talk" #: helper/memory-display.c:242 msgid "unknown field type" -msgstr "" +msgstr "Type de champ inconnu" #: helper/memory-display.c:249 helper/message-display.c:128 msgid "home" -msgstr "" +msgstr "domicile" #: helper/memory-display.c:252 helper/message-display.c:131 msgid "work" -msgstr "" +msgstr "travail" #: helper/message-cmdline.c:184 msgid "Not enough parameters!" -msgstr "" +msgstr "Pas assez de paramètres !" #: helper/message-cmdline.c:208 #, c-format msgid "What format of sms (\"%s\") ?\n" -msgstr "" +msgstr "Quel format de sms (\"%s\") ?\n" #: helper/message-cmdline.c:233 helper/message-cmdline.c:250 msgid "Where are parameters?" -msgstr "" +msgstr "Où sont les paramètres ?" #: helper/message-cmdline.c:264 msgid "Where is ringtone filename?" -msgstr "" +msgstr "Où est le nom de fichier de la sonnerie ?" #: helper/message-cmdline.c:282 helper/message-cmdline.c:300 #: helper/message-cmdline.c:351 msgid "Where is logo filename?" -msgstr "" +msgstr "Où est le nom de fichier du logo ?" #: helper/message-cmdline.c:318 msgid "Where is number of frames?" -msgstr "" +msgstr "Où est le nombre de trames ?" #: helper/message-cmdline.c:326 msgid "Too many animation frames!" -msgstr "" +msgstr "Trop de trames d’animation !" #: helper/message-cmdline.c:357 #, c-format msgid "File \"%s\"\n" -msgstr "" +msgstr "Le fichier \"%s\"\n" #: helper/message-cmdline.c:384 msgid "Bookmark not found in file" -msgstr "" +msgstr "Favoris non trouvés dans le fichier" #: helper/message-cmdline.c:408 msgid "WAP settings not found in file" -msgstr "" +msgstr "Paramètres WAP introuvables dans le fichier" #: helper/message-cmdline.c:429 msgid "Sorry. For now there is only support for GPRS or DATA bearers end" msgstr "" +"Désolé. Pour l’instant, seul les porteuses de fin GPRS et données sont " +"prises en charges" #: helper/message-cmdline.c:452 msgid "MMS settings not found in file" -msgstr "" +msgstr "Paramètres MMS non trouvés dans le fichier" #: helper/message-cmdline.c:466 msgid "Sorry. No GPRS bearer found in MMS settings" -msgstr "" +msgstr "Désolé. Aucune porteuse GPRS trouvée dans les paramètres MMS" #: helper/message-cmdline.c:512 msgid "ToDo note not found in file" -msgstr "" +msgstr "ToDo note non trouvée dans le fichier" #: helper/message-cmdline.c:574 msgid "Backup functionality not compiled in!" -msgstr "" +msgstr "Fonctionnalités de sauvegarde non compilées !" #: helper/message-cmdline.c:1055 #, c-format @@ -3859,109 +3854,109 @@ msgstr "Longueur du message erronée (\"%s\")\n" #: helper/message-cmdline.c:1078 #, c-format msgid "Unknown GSM network code (\"%s\")\n" -msgstr "" +msgstr "Code de réseau GSM inconnu (\"%s\")\n" #: helper/message-cmdline.c:1097 #, c-format msgid "You have to give number between 1 and 7 (\"%s\")\n" -msgstr "" +msgstr "Vous devez donner un nombre entre 1 et 7 (\"%s\")\n" #: helper/message-cmdline.c:1136 #, c-format msgid "Unknown validity string (\"%s\")\n" -msgstr "" +msgstr "Chaîne de validité inconnue (\"%s\")\n" #: helper/message-cmdline.c:1174 #, c-format msgid "You have to give number of EMS frames between 1 and 4 (\"%s\")\n" -msgstr "" +msgstr "Vous devez donner un nombre de trames EMS entre 1 et 4 (\"%s\")\n" #: helper/message-cmdline.c:1186 helper/message-cmdline.c:1203 #, c-format msgid "Can't open file \"%s\"\n" -msgstr "" +msgstr "Impossible d’ouvrir le fichier \"%s\"\n" #: helper/message-cmdline.c:1252 #, c-format msgid "Unknown parameter (\"%c\")\n" -msgstr "" +msgstr "Paramètre inconnu (\"%c\")\n" #: helper/message-cmdline.c:1257 msgid "Last parameter wasn't text" -msgstr "" +msgstr "Le dernier paramètre n'était pas du texte" #: helper/message-cmdline.c:1291 #, c-format msgid "Too long SMS name (\"%s\"), ignored\n" -msgstr "" +msgstr "Nom SMS trop long (\"%s\"), ignoré\n" #: helper/message-cmdline.c:1331 #, c-format msgid "Enter the message text and press %s:\n" -msgstr "" +msgstr "Saisissez le texte du message et appuyez sur %s :\n" #: helper/message-cmdline.c:1333 msgid "Ctrl+Z" -msgstr "" +msgstr "Ctrl+Z" #: helper/message-cmdline.c:1335 msgid "Ctrl+D" -msgstr "" +msgstr "Ctrl+D" #: helper/message-cmdline.c:1349 msgid "No chars read, assuming it is okay!" -msgstr "" +msgstr "Pas de caractères lus, en supposant que cela est correct !" #: helper/message-cmdline.c:1369 msgid "No network code" -msgstr "" +msgstr "Pas de code réseau" #: helper/message-cmdline.c:1375 msgid "You have to set network code!" -msgstr "" +msgstr "Vous devez définir le code de réseau !" #: helper/message-cmdline.c:1414 #, c-format msgid "Ringtone too long. %i percent part cut\n" -msgstr "" +msgstr "Sonnerie trop longue. %i pourcents coupé\n" #: helper/message-cmdline.c:1425 #, c-format msgid "There are %i SMS messages packed and the limit is %i. Exiting\n" -msgstr "" +msgstr "Il y a %i messages SMS conditionnés et la limite est de %i. Sortie\n" #: helper/message-cmdline.c:1435 msgid "Use -smscnumber option to give SMSC number" -msgstr "" +msgstr "Utilisez l'option -smscnumber pour définir le numéro SMSC" #: helper/message-display.c:26 #, c-format msgid "Location %i, folder \"%s\"" -msgstr "" +msgstr "Emplacement %i, dossier \"%s\"" #: helper/message-display.c:33 msgid "SIM memory" -msgstr "" +msgstr "Mémoire SIM" #: helper/message-display.c:36 msgid "phone memory" -msgstr "" +msgstr "mémoire téléphone" #: helper/message-display.c:39 msgid "phone or SIM memory" -msgstr "" +msgstr "mémoire téléphone ou SIM" #: helper/message-display.c:46 msgid "Inbox folder" -msgstr "" +msgstr "Dossier boîte de réception" #: helper/message-display.c:112 msgid "mobile" -msgstr "" +msgstr "mobile" #: helper/message-display.c:118 msgid "pager" -msgstr "" +msgstr "pager" #: helper/message-display.c:121 msgid "general" @@ -3969,11 +3964,11 @@ msgstr "Généralités" #: helper/message-display.c:145 msgid "8 bit SMS, cannot be displayed here" -msgstr "" +msgstr "SMS 8 bit, impossible d’afficher ici" #: helper/message-display.c:165 msgid "SMS status report" -msgstr "" +msgstr "Rapport d'état SMS" #: helper/message-display.c:169 helper/message-display.c:181 #: helper/message-display.c:233 helper/message-display.c:248 @@ -3987,217 +3982,219 @@ msgstr "Lu" #: helper/message-display.c:171 helper/message-display.c:291 msgid "UnRead" -msgstr "" +msgstr "Non lu" #: helper/message-display.c:172 helper/message-display.c:292 msgid "UnSent" -msgstr "" +msgstr "Non envoyé" #: helper/message-display.c:176 helper/message-display.c:279 msgid "Remote number" msgid_plural "Remote numbers" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Numéro distant" +msgstr[1] "Numéros distants" #: helper/message-display.c:180 helper/message-display.c:245 msgid "Reference number" -msgstr "" +msgstr "Numéro de référence" #: helper/message-display.c:182 helper/message-display.c:230 msgid "SMSC number" -msgstr "" +msgstr "Numéro SMSC" #: helper/message-display.c:183 msgid "SMSC response" -msgstr "" +msgstr "réponse SMSC" #: helper/message-display.c:184 msgid "Delivery status" -msgstr "" +msgstr "État de délivrance" #: helper/message-display.c:185 msgid "Details" -msgstr "" +msgstr "Détails" #: helper/message-display.c:188 helper/message-display.c:193 msgid "Temporary error, " -msgstr "" +msgstr "Erreur temporaire, " #: helper/message-display.c:190 msgid "Permanent error, " -msgstr "" +msgstr "Erreur permanente, " #: helper/message-display.c:196 msgid "SM received by the SME" -msgstr "" +msgstr "SM reçu par le SME" #: helper/message-display.c:197 msgid "" "SM forwarded by the SC to the SME but the SC is unable to confirm delivery" msgstr "" +"SM transféré par le SC au SME, mais le SC est pas en mesure de confirmer la " +"délivrance" #: helper/message-display.c:198 msgid "SM replaced by the SC" -msgstr "" +msgstr "SM remplacé par la SC" #: helper/message-display.c:199 helper/message-display.c:215 msgid "Congestion" -msgstr "" +msgstr "Congestion" #: helper/message-display.c:200 helper/message-display.c:216 msgid "SME busy" -msgstr "" +msgstr "SME occupé" #: helper/message-display.c:201 helper/message-display.c:217 msgid "No response from SME" -msgstr "" +msgstr "Pas de réponse du SME" #: helper/message-display.c:202 helper/message-display.c:218 msgid "Service rejected" -msgstr "" +msgstr "Service rejeté" #: helper/message-display.c:203 helper/message-display.c:209 #: helper/message-display.c:219 msgid "Quality of service not available" -msgstr "" +msgstr "Qualité du service non disponible" #: helper/message-display.c:204 helper/message-display.c:220 msgid "Error in SME" -msgstr "" +msgstr "Erreur dans le SME" #: helper/message-display.c:205 msgid "Remote procedure error" -msgstr "" +msgstr "Erreur de procédure distante" #: helper/message-display.c:206 msgid "Incompatible destination" -msgstr "" +msgstr "Destination incompatible" #: helper/message-display.c:207 msgid "Connection rejected by SME" -msgstr "" +msgstr "Connexion rejetée par le SME" #: helper/message-display.c:208 msgid "Not obtainable" -msgstr "" +msgstr "Non disponible" #: helper/message-display.c:210 msgid "No internetworking available" -msgstr "" +msgstr "Aucune interconnexion disponible" #: helper/message-display.c:211 msgid "SM Validity Period Expired" -msgstr "" +msgstr "Période de validité SM expirée" #: helper/message-display.c:212 msgid "SM deleted by originating SME" -msgstr "" +msgstr "SM supprimé par SME originaire" #: helper/message-display.c:213 msgid "SM Deleted by SC Administration" -msgstr "" +msgstr "SM supprimé par l'administration SC" #: helper/message-display.c:214 msgid "SM does not exist" -msgstr "" +msgstr "SM n'existe pas" #: helper/message-display.c:221 #, c-format msgid "Reserved/Specific to SC: %x" -msgstr "" +msgstr "Réservés/spécifique à SC : %x" #: helper/message-display.c:226 helper/message-display.c:243 msgid "SMS message" -msgstr "" +msgstr "Message SMS" #: helper/message-display.c:228 msgid "Saved" -msgstr "" +msgstr "Enregistré" #: helper/message-display.c:231 msgid " (set for reply)" -msgstr "" +msgstr " (défini pour répondre)" #: helper/message-display.c:240 msgid "SMS replacing ID" -msgstr "" +msgstr "ID de remplacement SMS" #: helper/message-display.c:255 msgid "Class" -msgstr "" +msgstr "Classe" #: helper/message-display.c:257 msgid "Coding" -msgstr "" +msgstr "Codage" #: helper/message-display.c:260 msgid "Unicode (no compression)" -msgstr "" +msgstr "Unicode (sans compression)" #: helper/message-display.c:263 msgid "Unicode (compression)" -msgstr "" +msgstr "Unicode (compression)" #: helper/message-display.c:266 msgid "Default GSM alphabet (no compression)" -msgstr "" +msgstr "Alphabet GSM par défaut (sans compression)" #: helper/message-display.c:269 msgid "Default GSM alphabet (compression)" -msgstr "" +msgstr "Alphabet GSM par défaut (compression)" #. l10n: 8-bit message coding #: helper/message-display.c:273 msgid "8-bit" -msgstr "" +msgstr "8-bit" #: helper/message-display.c:296 msgid "User Data Header" -msgstr "" +msgstr "En-tête des données utilisateur" #: helper/message-display.c:298 helper/message-display.c:299 msgid "Concatenated (linked) message" -msgstr "" +msgstr "Message concaténé (lié)" #: helper/message-display.c:300 msgid "Disables voice indicator" -msgstr "" +msgstr "Désactive l'indicateur vocal" #: helper/message-display.c:301 msgid "Enables voice indicator" -msgstr "" +msgstr "Permet l'indicateur vocal" #: helper/message-display.c:302 msgid "Disables fax indicator" -msgstr "" +msgstr "Désactive l'indicateur de télécopie" #: helper/message-display.c:303 msgid "Enables fax indicator" -msgstr "" +msgstr "Active l'indicateur de télécopie" #: helper/message-display.c:304 msgid "Disables email indicator" -msgstr "" +msgstr "Désactive l'indicateur d'email" #: helper/message-display.c:305 msgid "Enables email indicator" -msgstr "" +msgstr "Active l'indicateur d'email" #: helper/message-display.c:306 msgid "Void SMS" -msgstr "" +msgstr "SMS vide" #: helper/message-display.c:307 msgid "Nokia WAP bookmark" -msgstr "" +msgstr "favoris WAp Nokia" #: helper/message-display.c:308 msgid "Nokia operator logo" -msgstr "" +msgstr "Logo opérateur Nokia" #: helper/message-display.c:309 msgid "Nokia WAP bookmark or WAP/MMS settings" -msgstr "" +msgstr "favoris WAp Nokia ou paramètres WAP/MMS" #: helper/message-display.c:310 helper/message-display.c:311 msgid "Nokia ringtone" @@ -4205,78 +4202,80 @@ msgstr "Sonnerie Nokia" #: helper/message-display.c:312 msgid "Nokia GSM operator logo" -msgstr "" +msgstr "Logo opérateur Nokia GSM" #: helper/message-display.c:313 msgid "Nokia caller logo" -msgstr "" +msgstr "Logo de l'appelant Nokia" #: helper/message-display.c:314 msgid "Nokia profile" -msgstr "" +msgstr "Profil Nokia" #: helper/message-display.c:315 msgid "Nokia calendar note" -msgstr "" +msgstr "Note du calendrier Nokia" #: helper/message-display.c:316 msgid "Nokia phonebook entry" -msgstr "" +msgstr "Entrée du répertoire Nokia" #: helper/message-display.c:317 msgid "User UDH" -msgstr "" +msgstr "Utilisateur UDH" #: helper/message-display.c:318 msgid "MMS indicator" -msgstr "" +msgstr "Indicateur MMS" #: helper/message-display.c:322 #, c-format msgid ", ID (8 bit) %i" -msgstr "" +msgstr ", ID (8 bit) %i" #: helper/message-display.c:323 #, c-format msgid ", ID (16 bit) %i" -msgstr "" +msgstr ", ID (16 bit) %i" #: helper/message-display.c:326 #, c-format msgid ", part %i of %i" -msgstr "" +msgstr ", partie %i de %i" #: helper/message-display.c:328 #, c-format msgid ", %i parts" -msgstr "" +msgstr ", %i parties" #: helper/message-display.c:339 msgid "Siemens file" -msgstr "" +msgstr "Fichier Siemens" #: helper/message-display.c:347 #, c-format msgid "Unknown PDU type: 0x%x\n" -msgstr "" +msgstr "Type PDU inconnu : 0x%x\n" #: helper/message-display.c:394 msgid "" "Some details were ignored (unknown or not implemented in decoding functions)" msgstr "" +"Certains détails ont été ignorés (inconnu ou non implémenté dans les " +"fonctions de décodage)" #: helper/message-display.c:399 msgid "Siemens OTA file" -msgstr "" +msgstr "Fichier Siemens OTA" #: helper/message-display.c:401 msgid " - VCARD" -msgstr "" +msgstr " - VCARD" #: helper/message-display.c:415 #, c-format msgid "Ringtone \"%s\"\n" -msgstr "" +msgstr "Sonnerie \"%s\"\n" #: helper/message-display.c:420 msgid "Do you want to play it?" @@ -4289,7 +4288,7 @@ msgstr "Logo de l'appelant" #: helper/message-display.c:429 #, c-format msgid "Operator logo for %s network" -msgstr "" +msgstr "Logo de l'opérateur pour le réseau %s" #: helper/message-display.c:449 msgid "Profile" @@ -4301,7 +4300,7 @@ msgstr "EMS son ID" #: helper/message-display.c:473 msgid "EMS animation ID" -msgstr "" +msgstr "ID d’animation EMS" #: helper/message-display.c:479 msgid "Message size" @@ -4314,7 +4313,7 @@ msgstr "Erreur" #: helper/message-display.c:545 msgid "Data PDU" -msgstr "" +msgstr "Données PDU" #: helper/message-display.c:546 msgid "Number of bits" @@ -4322,7 +4321,7 @@ msgstr "Nombre de bit" #: helper/message-display.c:548 msgid "UDH" -msgstr "" +msgstr "UDH" #: helper/message-display.c:564 msgid "Whole PDU" diff --git a/locale/fr/libgammu.po b/locale/fr/libgammu.po index ea974c5..c7173af 100644 --- a/locale/fr/libgammu.po +++ b/locale/fr/libgammu.po @@ -8,16 +8,16 @@ msgstr "" "Project-Id-Version: libgammu 1.22.93\n" "Report-Msgid-Bugs-To: gammu-users@lists.sourceforge.net\n" "POT-Creation-Date: 2016-10-11 08:16+0200\n" -"PO-Revision-Date: 2016-07-20 20:52+0000\n" -"Last-Translator: Nabil BENDAFI <nabil@bendafi.fr>\n" -"Language-Team: French <https://hosted.weblate.org/projects/gammu/libgammu/fr/" -">\n" +"PO-Revision-Date: 2017-05-02 17:18+0000\n" +"Last-Translator: Kyodev <kyodev@yandex.com>\n" +"Language-Team: French " +"<https://hosted.weblate.org/projects/gammu/libgammu/fr/>\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 2.8-dev\n" +"X-Generator: Weblate 2.14-dev\n" #: libgammu/gsmcomon.c:84 msgid "No error." @@ -88,40 +88,28 @@ msgstr "" "être pas connecté." #: libgammu/gsmcomon.c:98 -#, fuzzy -#| msgid "" -#| "Frame not requested right now. See <http://wammu.eu/support/bugs/> for " -#| "information how to report it." msgid "" "Frame not requested right now. See <https://wammu.eu/support/bugs/> for " "information how to report it." msgstr "" -"Trame non demandée pour le moment. Consulter <http://cihar.com/gammu/report> " -"pour savoir comment rapporter cette information." +"Trame non demandée pour le moment. Consulter <https://wammu.eu/support/bugs/>" +" pour savoir comment le signaler." #: libgammu/gsmcomon.c:99 -#, fuzzy -#| msgid "" -#| "Unknown response from phone. See <http://wammu.eu/support/bugs/> for " -#| "information how to report it." msgid "" "Unknown response from phone. See <https://wammu.eu/support/bugs/> for " "information how to report it." msgstr "" -"Réponse inconnu du téléphone. Consulter <http://cihar.com/gammu/report> pour " -"savoir comment rapporter cette information." +"Réponse inconnue du téléphone. Consulter <https://wammu.eu/support/bugs/> " +"pour savoir comment le signaler." #: libgammu/gsmcomon.c:100 -#, fuzzy -#| msgid "" -#| "Unknown frame. See <http://wammu.eu/support/bugs/> for information how to " -#| "report it." msgid "" "Unknown frame. See <https://wammu.eu/support/bugs/> for information how to " "report it." msgstr "" -"Frame inconnue. Consulter <http://cihar.com/gammu/report> pour savoir " -"comment rapporter cette information." +"Trame inconnue. Consulter <https://wammu.eu/support/bugs/> pour savoir " +"comment le signaler." #: libgammu/gsmcomon.c:101 msgid "Unknown connection type string. Check config file." diff --git a/smsd/CMakeLists.txt b/smsd/CMakeLists.txt index 937b15e..1af9041 100644 --- a/smsd/CMakeLists.txt +++ b/smsd/CMakeLists.txt @@ -125,11 +125,6 @@ if(CMAKE_COMPILER_IS_MINGW AND BUILD_SHARED_LIBS) endif(CMAKE_COMPILER_IS_MINGW AND BUILD_SHARED_LIBS) target_link_libraries (gsmsd libGammu) -if (NOT HAVE_STRPTIME) - target_link_libraries (gsmsd strptime) -endif (NOT HAVE_STRPTIME) -target_link_libraries (gsmsd string) -target_link_libraries (gsmsd array) # Gammu-smsd program add_executable (gammu-smsd ${DAEMON_SRC} ${SMSD_RESOURCES}) diff --git a/smsd/core.c b/smsd/core.c index 7c29640..80bbe3c 100644 --- a/smsd/core.c +++ b/smsd/core.c @@ -59,7 +59,7 @@ #include "log-event.h" #endif -#include "../helper/string.h" +#include "../libgammu/misc/string.h" #ifndef PATH_MAX #ifdef MAX_PATH @@ -106,6 +106,21 @@ GSM_Error SMSD_Shutdown(GSM_SMSDConfig *Config) } /** + * Interruptuptible sleep allowing to terminate SMSD. + */ +void SMSD_InterruptibleSleep(GSM_SMSDConfig *Config, int seconds) +{ + int i, loops; + loops = seconds * 2; + for (i = 0; i < loops; i++) { + if (Config->shutdown) { + break; + } + usleep(500000); + } +} + +/** * Callback from libGammu on sending message. */ void SMSD_SendSMSStatusCallback (GSM_StateMachine *sm, int status, int mr, void *user_data) @@ -391,6 +406,7 @@ GSM_SMSDConfig *SMSD_NewConfig(const char *name) Config->ServiceName = NULL; Config->Service = NULL; Config->IgnoredMessages = 0; + Config->PhoneID = NULL; #if defined(HAVE_MYSQL_MYSQL_H) Config->conn.my = NULL; @@ -804,7 +820,7 @@ GSM_Error SMSD_ReadConfig(const char *filename, GSM_SMSDConfig *Config, gboolean Config->deliveryreportdelay = INI_GetInt(Config->smsdcfgfile, "smsd", "deliveryreportdelay", 600); Config->sendtimeout = INI_GetInt(Config->smsdcfgfile, "smsd", "sendtimeout", 30); Config->receivefrequency = INI_GetInt(Config->smsdcfgfile, "smsd", "receivefrequency", 15); - Config->statusfrequency = INI_GetInt(Config->smsdcfgfile, "smsd", "statusfrequency", 15); + Config->statusfrequency = INI_GetInt(Config->smsdcfgfile, "smsd", "statusfrequency", 60); Config->loopsleep = INI_GetInt(Config->smsdcfgfile, "smsd", "loopsleep", 1); Config->checksecurity = INI_GetBool(Config->smsdcfgfile, "smsd", "checksecurity", TRUE); Config->hangupcalls = INI_GetBool(Config->smsdcfgfile, "smsd", "hangupcalls", FALSE); @@ -1047,7 +1063,7 @@ void SMSD_RunOnReceiveEnvironment(GSM_MultiSMSMessage *sms, GSM_SMSDConfig *Conf setenv(name, buffer, 1); sprintf(name, "SMS_%d_NUMBER", i + 1); setenv(name, DecodeUnicodeConsole(sms->SMS[i].Number), 1); - if (sms->SMS[i].Coding != SMS_Coding_8bit) { + if (sms->SMS[i].Coding != SMS_Coding_8bit && sms->SMS[i].UDH.Type != UDH_UserUDH) { sprintf(name, "SMS_%d_TEXT", i + 1); setenv(name, DecodeUnicodeConsole(sms->SMS[i].Text), 1); } @@ -1065,7 +1081,7 @@ void SMSD_RunOnReceiveEnvironment(GSM_MultiSMSMessage *sms, GSM_SMSDConfig *Conf case SMS_ConcatenatedAutoTextLong16bit: case SMS_NokiaVCARD21Long: case SMS_NokiaVCALENDAR10Long: - sprintf(name, "DECODED_%d_TEXT", i); + sprintf(name, "DECODED_%d_TEXT", i + 1); setenv(name, DecodeUnicodeConsole(SMSInfo.Entries[i].Buffer), 1); break; case SMS_MMSIndicatorLong: @@ -1783,7 +1799,7 @@ failure_unsent: Config->Service->UpdateRetries(Config, Config->SMSID); - sleep(60); + SMSD_InterruptibleSleep(Config, 60); return ERR_UNKNOWN; failure_sent: @@ -1933,6 +1949,7 @@ void SMSD_IncomingCallCallback(GSM_StateMachine *s, GSM_Call *call, void *user_d SMSD_Log(DEBUG_INFO, Config, "Call callback: Unknown status %d\n", call->Status); } } + /** * Main loop which takes care of connection to phone and processing of * messages. @@ -1943,8 +1960,7 @@ GSM_Error SMSD_MainLoop(GSM_SMSDConfig *Config, gboolean exit_on_failure, int ma int errors = -1, initerrors=0; double lastsleep; time_t lastreceive = 0, lastreset = time(NULL), lasthardreset = time(NULL), lastnothingsent = 0, laststatus = 0; - time_t lastloop = 0, current_time; - int i; + time_t lastloop = 0; gboolean first_start = TRUE, force_reset = FALSE, force_hard_reset = FALSE; Config->failure = ERR_NONE; @@ -1988,11 +2004,7 @@ GSM_Error SMSD_MainLoop(GSM_SMSDConfig *Config, gboolean exit_on_failure, int ma if (initerrors++ > 3) { SMSD_Log(DEBUG_INFO, Config, "Going to 30 seconds sleep because of too many connection errors"); - for (i = 0; i < 60; i++) { - if (Config->shutdown) - break; - usleep(500000); - } + SMSD_InterruptibleSleep(Config, 30); } SMSD_Log(DEBUG_INFO, Config, "Starting phone communication..."); error = GSM_InitConnection_Log(Config->gsm, 2, SMSD_Log_Function, Config); @@ -2043,14 +2055,14 @@ GSM_Error SMSD_MainLoop(GSM_SMSDConfig *Config, gboolean exit_on_failure, int ma error = GSM_Reset(Config->gsm, FALSE); /* soft reset */ SMSD_LogError(DEBUG_INFO, Config, "Soft reset return code", error); lastreset = time(NULL); - sleep(5); + SMSD_InterruptibleSleep(Config, 5); force_reset = FALSE; } if (force_hard_reset) { error = GSM_Reset(Config->gsm, TRUE); /* hard reset */ SMSD_LogError(DEBUG_INFO, Config, "Hard reset return code", error); lasthardreset = time(NULL); - sleep(5); + SMSD_InterruptibleSleep(Config, 5); force_hard_reset = FALSE; } break; @@ -2067,7 +2079,7 @@ GSM_Error SMSD_MainLoop(GSM_SMSDConfig *Config, gboolean exit_on_failure, int ma } /* Should we receive? */ - if (Config->enable_receive && ((difftime(time(NULL), lastreceive) >= Config->receivefrequency) || (Config->SendingSMSStatus != ERR_NONE))) { + if (Config->enable_receive && ((difftime(lastloop, lastreceive) >= Config->receivefrequency) || (Config->SendingSMSStatus != ERR_NONE))) { lastreceive = time(NULL); /* Do we need to check security? */ @@ -2095,12 +2107,11 @@ GSM_Error SMSD_MainLoop(GSM_SMSDConfig *Config, gboolean exit_on_failure, int ma /* time for preventive reset */ - current_time = time(NULL); - if (Config->resetfrequency > 0 && difftime(current_time, lastreset) >= Config->resetfrequency) { + if (Config->resetfrequency > 0 && difftime(lastloop, lastreset) >= Config->resetfrequency) { force_reset = TRUE; continue; } - if (Config->hardresetfrequency > 0 && difftime(current_time, lasthardreset) >= Config->hardresetfrequency) { + if (Config->hardresetfrequency > 0 && difftime(lastloop, lasthardreset) >= Config->hardresetfrequency) { force_hard_reset = TRUE; continue; } @@ -2109,11 +2120,10 @@ GSM_Error SMSD_MainLoop(GSM_SMSDConfig *Config, gboolean exit_on_failure, int ma } /* Send any queued messages */ - current_time = time(NULL); - if (Config->enable_send && (difftime(current_time, lastnothingsent) >= Config->commtimeout)) { + if (Config->enable_send && (difftime(lastloop, lastnothingsent) >= Config->commtimeout)) { error = SMSD_SendSMS(Config); if (error == ERR_EMPTY) { - lastnothingsent = current_time; + lastnothingsent = lastloop; } /* We don't care about other errors here, they are handled in SMSD_SendSMS */ } @@ -2122,23 +2132,22 @@ GSM_Error SMSD_MainLoop(GSM_SMSDConfig *Config, gboolean exit_on_failure, int ma } /* Refresh phone status in shared memory and in service */ - current_time = time(NULL); - if ((Config->statusfrequency > 0) && (difftime(current_time, laststatus) >= Config->statusfrequency)) { + if ((Config->statusfrequency > 0) && (difftime(lastloop, laststatus) >= Config->statusfrequency)) { SMSD_PhoneStatus(Config); - laststatus = current_time; + laststatus = lastloop; Config->Service->RefreshPhoneStatus(Config); } if (Config->shutdown) { break; } + /* Sleep some time before another loop */ - current_time = time(NULL); - lastsleep = difftime(current_time, lastloop); - if (Config->loopsleep == 1) { - sleep(1); - } else if (lastsleep < Config->loopsleep) { - sleep(Config->loopsleep - lastsleep); + /* Duration of last loop cycle */ + lastsleep = difftime(time(NULL), lastloop); + if (Config->loopsleep > 0 && lastsleep < Config->loopsleep) { + /* Sleep LoopSleep - time of the loop */ + SMSD_InterruptibleSleep(Config, Config->loopsleep - lastsleep); } } Config->Service->Free(Config); diff --git a/smsd/core.h b/smsd/core.h index 190f2d7..9e7928e 100644 --- a/smsd/core.h +++ b/smsd/core.h @@ -21,7 +21,7 @@ #include "log.h" -#include "../helper/array.h" +#include "../libgammu/misc/array.h" typedef enum { DEBUG_ERROR = -1, diff --git a/smsd/log-event.c b/smsd/log-event.c index 1a482a4..6158de0 100644 --- a/smsd/log-event.c +++ b/smsd/log-event.c @@ -83,7 +83,7 @@ gboolean eventlog_register(void) 0, REG_SZ, (BYTE *)program_name, - strlen(program_name) + 1); + (DWORD)(strlen(program_name) + 1)); if (ret != ERROR_SUCCESS) { fprintf(stderr, "Failed to write CategoryMessageFile to registry!\n"); diff --git a/smsd/services/files.c b/smsd/services/files.c index 35e2a49..d020caf 100644 --- a/smsd/services/files.c +++ b/smsd/services/files.c @@ -23,7 +23,7 @@ #include "../core.h" -#include "../../helper/string.h" +#include "../../libgammu/misc/string.h" #ifndef PATH_MAX #ifdef MAX_PATH diff --git a/smsd/services/odbc.c b/smsd/services/odbc.c index 9f7b8a2..a57a1a0 100644 --- a/smsd/services/odbc.c +++ b/smsd/services/odbc.c @@ -21,7 +21,7 @@ #include <sql.h> #include <sqlext.h> -#include "../../helper/string.h" +#include "../../libgammu/misc/string.h" #include "../core.h" #include "sql.h" #include "sql-core.h" @@ -272,6 +272,7 @@ char * SMSDODBC_QuoteString(GSM_SMSDConfig * Config, const char *string) strncasecmp(driver_name, "sqlite", 6) == 0 || strncasecmp(driver_name, "oracle", 6) == 0 || strncasecmp(driver_name, "freetds", 6) == 0 || + strncasecmp(driver_name, "mssql", 6) == 0 || strcasecmp(Config->driver, "access") == 0) { quote = '\''; } diff --git a/smsd/services/sql.c b/smsd/services/sql.c index bc19b4b..9e3ef33 100644 --- a/smsd/services/sql.c +++ b/smsd/services/sql.c @@ -14,7 +14,7 @@ #define _DEFAULT_SOURCE #include <time.h> #include <gammu.h> -#include "../../helper/strptime.h" +#include "../../libgammu/misc/strptime.h" #include <stdarg.h> #include <stdlib.h> @@ -28,7 +28,7 @@ #endif #include "../core.h" -#include "../../helper/string.h" +#include "../../libgammu/misc/string.h" /** * Returns name of the SQL dialect to use. @@ -101,7 +101,7 @@ static const char *SMSDSQL_EscapeChar(GSM_SMSDConfig * Config) return escape_char_sqlite; } else if (strcasecmp(driver_name, "oracle") == 0 || strcasecmp(driver_name, "freetds") == 0 || strcasecmp(driver_name, "mssql") == 0 || strcasecmp(driver_name, "sybase") == 0) { return escape_char_freetds; - } else if (strcasecmp(Config->driver, "odbc") == 0) { + } else if (strcasecmp(Config->driver, "odbc") == 0 || strcasecmp(Config->driver, "mssql") == 0) { return escape_char_odbc; } else { return escape_char_fallback; @@ -144,7 +144,7 @@ static const char *SMSDSQL_TopClause(GSM_SMSDConfig * Config, const char *count) driver_name = SMSDSQL_SQLName(Config); - if (strcasecmp(driver_name, "access") == 0) { + if (strcasecmp(driver_name, "access") == 0 || strcasecmp(driver_name, "mssql") == 0) { strcpy(result, top_clause_access); strcat(result, " "); strcat(result, count); @@ -165,7 +165,7 @@ static const char *SMSDSQL_LimitClause(GSM_SMSDConfig * Config, const char *coun driver_name = SMSDSQL_SQLName(Config); - if (strcasecmp(driver_name, "access") == 0 || strcasecmp(driver_name, "freetds") == 0 || strcasecmp(driver_name, "oracle") == 0) { + if (strcasecmp(driver_name, "mssql") == 0 || strcasecmp(driver_name, "access") == 0 || strcasecmp(driver_name, "freetds") == 0 || strcasecmp(driver_name, "oracle") == 0) { return limit_clause_access; } else { strcpy(result, limit_clause_fallback); @@ -1122,9 +1122,7 @@ static GSM_Error SMSDSQL_AddSentSMSInfo(GSM_MultiSMSMessage * sms, GSM_SMSDConfi if (err == SMSD_SEND_OK) { SMSD_Log(DEBUG_NOTICE, Config, "Transmitted %s (%s: %i) to %s", Config->SMSID, (Part == sms->Number ? "total" : "part"), Part, DecodeUnicodeString(sms->SMS[0].Number)); - } - if (err == SMSD_SEND_OK) { if (sms->SMS[Part - 1].PDU == SMS_Status_Report) { message_state = "SendingOK"; } else { diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index f7005a1..73d33a3 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -44,7 +44,7 @@ add_test(base64 "${GAMMU_TEST_PATH}/base64${CMAKE_EXECUTABLE_SUFFIX}") # Array manipulation tests add_executable(array-test array-test.c) add_coverage(array-test) -target_link_libraries (array-test array) +target_link_libraries (array-test libGammu) add_test(array "${GAMMU_TEST_PATH}/array-test${CMAKE_EXECUTABLE_SUFFIX}") # UTF-8 manipulation tests @@ -421,7 +421,7 @@ if (WITH_ATGEN) # AT SMS parsing add_executable(sms-at-parse sms-at-parse.c) add_coverage(sms-at-parse) - target_link_libraries(sms-at-parse libGammu ${LIBINTL_LIBRARIES}) + target_link_libraries(sms-at-parse libGammu ${LIBINTL_LIBRARIES} gsmsd) target_link_libraries(sms-at-parse messagedisplay) # List test cases for success diff --git a/tests/array-test.c b/tests/array-test.c index 336e39e..6631e75 100644 --- a/tests/array-test.c +++ b/tests/array-test.c @@ -2,7 +2,7 @@ * Simple test case for array manipulations. */ -#include "../helper/array.h" +#include "../libgammu/misc/array.h" #include "common.h" #include <gammu-misc.h> diff --git a/tests/at-sms/40.dump b/tests/at-sms/40.dump new file mode 100644 index 0000000..78afb47 --- /dev/null +++ b/tests/at-sms/40.dump @@ -0,0 +1,4 @@ +AT+CMGR=1 ++CMGR: 1,,153 +07912374151616F6440B911174164210F000F571309290346280860605040B8423F04F06226170706C69636174696F6E2F766E642E7761702E6D6D732D6D65737361676500AF848C82983831343630343934406D6D7331008D928918802B33333333333439333231312F545950453D504C4D4E0096008F8186818A808E03017A598805810303F48083687474703A2F2F6D74732F3F69643D383134363034393400 +OK diff --git a/tests/sms-at-parse.c b/tests/sms-at-parse.c index e792187..18d20af 100644 --- a/tests/sms-at-parse.c +++ b/tests/sms-at-parse.c @@ -1,6 +1,7 @@ /* Test for decoding SMS on AT driver */ #include <gammu.h> +#include <gammu-smsd.h> #include <stdlib.h> #include <stdio.h> #include <string.h> @@ -13,6 +14,7 @@ #include "common.h" extern GSM_Error ATGEN_ReplyGetSMSMessage(GSM_Protocol_Message *msg, GSM_StateMachine * s); +extern void SMSD_RunOnReceiveEnvironment(GSM_MultiSMSMessage *sms, GSM_SMSDConfig *Config, const char *locations); #define BUFFER_SIZE 16384 @@ -28,6 +30,7 @@ int main(int argc, char **argv) GSM_Protocol_Message msg; GSM_Error error; GSM_MultiSMSMessage sms; + GSM_SMSDConfig *smsd; #if 0 GSM_SMS_Backup bkp; #endif @@ -52,6 +55,8 @@ int main(int argc, char **argv) fclose(f); return 1; } + + smsd = SMSD_NewConfig("test"); /* Zero terminate data */ buffer[len] = 0; @@ -111,6 +116,8 @@ int main(int argc, char **argv) DisplayMultiSMSInfo(&sms, FALSE, TRUE, NULL, NULL); DisplayMultiSMSInfo(&sms, TRUE, TRUE, NULL, NULL); printf("Parts: %d, count: %d, ID16: %d, ID8: %d\n", sms.SMS[0].UDH.AllParts, sms.Number, sms.SMS[0].UDH.ID16bit, sms.SMS[0].UDH.ID8bit); + + SMSD_RunOnReceiveEnvironment(&sms, smsd, "1"); } /* This is normally done by ATGEN_Terminate */ diff --git a/tests/sql-parse-date.c b/tests/sql-parse-date.c index feab457..40c61a2 100644 --- a/tests/sql-parse-date.c +++ b/tests/sql-parse-date.c @@ -2,7 +2,7 @@ * Simple test case for array manipulations. */ -#include "../helper/array.h" +#include "../libgammu/misc/array.h" #include "common.h" #include <gammu-smsd.h> #include "../smsd/services/sql.h" /* For SMSDSQL_ParseDate */ |