ttomcat-1778514358873.zip-extract/apache-tomcat-11.0.18-src/java/org/apache/catalina/ssi/SSIFsize.java

Path
ttomcat-1778514358873.zip-extract/apache-tomcat-11.0.18-src/java/org/apache/catalina/ssi/SSIFsize.java
Status
scanned
Type
file
Name
SSIFsize.java
Extension
.java
Programming language
Java
Mime type
text/plain
File type
ASCII text, with CRLF line terminators
Tag

      
    
Rootfs path

      
    
Size
4338 (4.2 KB)
MD5
2c3c8c69995625b901d88bc3cd3a6097
SHA1
686e1e92342f042f5b317ffc0ef3bb6368768b19
SHA256
94d12015e184e25931852e3681978030e463930fe35a11fa3d76d645bc8820c1
SHA512

      
    
SHA1_git
fca72daff3a402d69f87a51b07eeb2465870a6de
Is binary

      
    
Is text
True
Is archive

      
    
Is media

      
    
Is legal

      
    
Is manifest

      
    
Is readme

      
    
Is top level

      
    
Is key file

      
    
SSIFsize.java | 4.2 KB |

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.catalina.ssi; import java.io.IOException; import java.io.PrintWriter; import java.text.DecimalFormat; import org.apache.tomcat.util.res.StringManager; /** * Implements the Server-side #fsize command. */ public final class SSIFsize implements SSICommand { private static final StringManager sm = StringManager.getManager(SSIFsize.class); static final int ONE_KIBIBYTE = 1024; static final int ONE_MEBIBYTE = 1024 * 1024; @Override public long process(SSIMediator ssiMediator, String commandName, String[] paramNames, String[] paramValues, PrintWriter writer) { long lastModified = 0; String configErrMsg = ssiMediator.getConfigErrMsg(); for (int i = 0; i < paramNames.length; i++) { String paramName = paramNames[i]; String paramValue = paramValues[i]; String substitutedValue = ssiMediator.substituteVariables(paramValue); try { if (paramName.equalsIgnoreCase("file") || paramName.equalsIgnoreCase("virtual")) { boolean virtual = paramName.equalsIgnoreCase("virtual"); lastModified = ssiMediator.getFileLastModified(substitutedValue, virtual); long size = ssiMediator.getFileSize(substitutedValue, virtual); String configSizeFmt = ssiMediator.getConfigSizeFmt(); writer.write(formatSize(size, configSizeFmt)); } else { ssiMediator.log(sm.getString("ssiCommand.invalidAttribute", paramName)); writer.write(configErrMsg); } } catch (IOException ioe) { ssiMediator.log(sm.getString("ssiFsize.noSize", substitutedValue), ioe); writer.write(configErrMsg); } } return lastModified; } public String padLeft(String str, int maxChars) { String result = str; int charsToAdd = maxChars - str.length(); if (charsToAdd > 0) { result = " ".repeat(charsToAdd) + str; } return result; } // We try to mimic httpd here, as we do everywhere. // All the 'magic' numbers are from the util_script.c httpd source file. // Should use KiB and MiB in output but use k and M for consistency with httpd. private String formatSize(long size, String format) { String retString; if (format.equalsIgnoreCase("bytes")) { DecimalFormat decimalFormat = new DecimalFormat("#,##0"); retString = decimalFormat.format(size); } else { if (size < 0) { retString = "-"; } else if (size == 0) { retString = "0k"; } else if (size < ONE_KIBIBYTE) { retString = "1k"; } else if (size < ONE_MEBIBYTE) { retString = Long.toString((size + 512) / ONE_KIBIBYTE); retString += "k"; } else if (size < 99 * ONE_MEBIBYTE) { DecimalFormat decimalFormat = new DecimalFormat("0.0M"); retString = decimalFormat.format(size / (double) ONE_MEBIBYTE); } else { retString = Long.toString((size + (529 * ONE_KIBIBYTE)) / ONE_MEBIBYTE); retString += "M"; } retString = padLeft(retString, 5); } return retString; } }
Detected license expression
apache-2.0
Detected license expression (SPDX)
Apache-2.0
Percentage of license text
27.74
Copyrights

      
    
Holders

      
    
Authors

      
    
License detections License expression License expression SPDX
apache_2_0-4bde3f57-78aa-4201-96bf-531cba09e7de apache-2.0 Apache-2.0
URL Start line End line
http://www.apache.org/licenses/LICENSE-2.0 9 9