< prev index next >

src/share/vm/logging/logFileOutput.cpp

Print this page




  99     char* equals_pos = strchr(pos, '=');
 100     if (equals_pos == NULL) {
 101       success = false;
 102       break;
 103     }
 104     char* key = pos;
 105     char* value_str = equals_pos + 1;
 106     *equals_pos = '\0';
 107 
 108     if (strcmp(FileCountOptionKey, key) == 0) {
 109       size_t value = parse_value(value_str);
 110       if (value == SIZE_MAX || value >= UINT_MAX) {
 111         success = false;
 112         break;
 113       }
 114       _file_count = static_cast<uint>(value);
 115       _file_count_max_digits = static_cast<uint>(log10(static_cast<double>(_file_count)) + 1);
 116       _archive_name_len = 2 + strlen(_file_name) + _file_count_max_digits;
 117       _archive_name = NEW_C_HEAP_ARRAY(char, _archive_name_len, mtLogging);
 118     } else if (strcmp(FileSizeOptionKey, key) == 0) {
 119       size_t value = parse_value(value_str);
 120       if (value == SIZE_MAX || value > SIZE_MAX / K) {








 121         success = false;
 122         break;
 123       }
 124       _rotate_size = value * K;
 125     } else {
 126       success = false;
 127       break;
 128     }
 129     pos = comma_pos + 1;
 130   } while (comma_pos != NULL);
 131 
 132   os::free(opts);
 133   return success;
 134 }
 135 
 136 bool LogFileOutput::initialize(const char* options) {
 137   if (!configure_rotation(options)) {
 138     return false;
 139   }
 140   _stream = fopen(_file_name, FileOpenMode);
 141   if (_stream == NULL) {
 142     log_error(logging)("Could not open log file '%s' (%s).\n", _file_name, os::strerror(errno));
 143     return false;
 144   }




  99     char* equals_pos = strchr(pos, '=');
 100     if (equals_pos == NULL) {
 101       success = false;
 102       break;
 103     }
 104     char* key = pos;
 105     char* value_str = equals_pos + 1;
 106     *equals_pos = '\0';
 107 
 108     if (strcmp(FileCountOptionKey, key) == 0) {
 109       size_t value = parse_value(value_str);
 110       if (value == SIZE_MAX || value >= UINT_MAX) {
 111         success = false;
 112         break;
 113       }
 114       _file_count = static_cast<uint>(value);
 115       _file_count_max_digits = static_cast<uint>(log10(static_cast<double>(_file_count)) + 1);
 116       _archive_name_len = 2 + strlen(_file_name) + _file_count_max_digits;
 117       _archive_name = NEW_C_HEAP_ARRAY(char, _archive_name_len, mtLogging);
 118     } else if (strcmp(FileSizeOptionKey, key) == 0) {
 119       size_t value;
 120       if (Arguments::atomull(value_str, &value)) {
 121         if (value <= SIZE_MAX) {
 122           _rotate_size = value;
 123           success = true;
 124         } else {
 125           success = false;
 126         }
 127         break;
 128       } else {
 129         success = false;
 130         break;
 131       }

 132     } else {
 133       success = false;
 134       break;
 135     }
 136     pos = comma_pos + 1;
 137   } while (comma_pos != NULL);
 138 
 139   os::free(opts);
 140   return success;
 141 }
 142 
 143 bool LogFileOutput::initialize(const char* options) {
 144   if (!configure_rotation(options)) {
 145     return false;
 146   }
 147   _stream = fopen(_file_name, FileOpenMode);
 148   if (_stream == NULL) {
 149     log_error(logging)("Could not open log file '%s' (%s).\n", _file_name, os::strerror(errno));
 150     return false;
 151   }


< prev index next >