]> git.saurik.com Git - apple/mdnsresponder.git/blob - Clients/PrinterSetupWizard/Logger.cpp
mDNSResponder-878.270.2.tar.gz
[apple/mdnsresponder.git] / Clients / PrinterSetupWizard / Logger.cpp
1 /* -*- Mode: C; tab-width: 4 -*-
2 *
3 * Copyright (c) 1997-2004 Apple Computer, Inc. All rights reserved.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18 #include "stdafx.h"
19 #include "Logger.h"
20 #include "DebugServices.h"
21 #include <string>
22
23
24 Logger::Logger()
25 {
26 std::string tmp;
27 char path[ MAX_PATH ];
28 HRESULT err;
29 BOOL ok;
30
31 err = SHGetFolderPathA( NULL, CSIDL_LOCAL_APPDATA, NULL, 0, path );
32 require_noerr( err, exit );
33
34 tmp = path;
35
36 // Create Logs subdir
37 tmp += "\\Apple";
38 ok = CreateDirectoryA( tmp.c_str(), NULL );
39 require_action( ( ok || ( GetLastError() == ERROR_ALREADY_EXISTS ) ), exit, err = -1 );
40
41 // Create Logs subdir
42 tmp += "\\Bonjour";
43 ok = CreateDirectoryA( tmp.c_str(), NULL );
44 require_action( ( ok || ( GetLastError() == ERROR_ALREADY_EXISTS ) ), exit, err = -1 );
45
46 // Create log file
47 tmp += "\\PrinterSetupLog.txt";
48 open( tmp.c_str());
49
50 *this << currentTime() << " Log started" << std::endl;
51
52 exit:
53
54 return;
55 }
56
57
58 Logger::~Logger()
59 {
60 *this << currentTime() << " Log finished" << std::endl;
61 flush();
62 }
63
64
65 std::string
66 Logger::currentTime()
67 {
68 time_t ltime;
69 struct tm now;
70 int err;
71 std::string ret;
72
73 time( &ltime );
74 err = localtime_s( &now, &ltime );
75
76 if ( !err )
77 {
78 char temp[ 64 ];
79
80 strftime( temp, sizeof( temp ), "%m/%d/%y %I:%M:%S %p", &now );
81 ret = temp;
82 }
83
84 return ret;
85 }