函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:lib\vsprintf.c Create Date:2022-07-27 07:09:41
Last Modify:2022-05-21 09:47:42 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:Helper function to decode printf style format

函数原型:static __attribute__((__noinline__)) int format_decode(const char *fmt, struct printf_spec *spec)

返回类型:int

参数:

类型参数名称
const char *fmt
struct printf_spec *spec
2284  start等于fmt
2288  如果 format_type enum 恒等于FORMAT_TYPE_WIDTH
2289  如果 width of output field 小于0则
2293  format_type enum 等于 Just a string part
2294  转到:precision
2298  如果 format_type enum 恒等于FORMAT_TYPE_PRECISION
2299  如果 # of digits/chars 小于0则 # of digits/chars 等于0
2302  format_type enum 等于 Just a string part
2303  转到:qualifier
2307  format_type enum 等于 Just a string part
2309 fmt循环
2310  如果fmt恒等于'%'则退出
2315  如果fmt不等于start或非fmt则返回:fmtstart
2319  flags to number() 等于0
2321  当1循环
2322  bool found = true
2324  fmt先自加
2327  :fmt恒等于'-'
2327  退出
2328  :fmt恒等于'+'
2328  退出
2329  :fmt恒等于' '
2329  退出
2330  :fmt恒等于'#'
2330  退出
2331  :fmt恒等于'0'
2331  退出
2332  默认
2332  found = false
2335  如果非found退出
2340  width of output field 等于负1
2342  如果isdigit( * fmt)则 width of output field 等于-*- linux-c -*- ------------------------------------------------------- ** Copyright (C) 1991, 1992 Linus Torvalds* Copyright 2007 rPath, Inc. - All Rights Reserved* -----------------------------------------------------------------------
2344  否则如果fmt恒等于'*'则
2346  format_type enum 等于FORMAT_TYPE_WIDTH
2347  返回:fmt先自加减start
2350  precision :
2352  # of digits/chars 等于负1
2353  如果fmt恒等于'.'则
2354  fmt先自加
2355  如果isdigit( * fmt)则
2357  如果 # of digits/chars 小于0则 # of digits/chars 等于0
2359  否则如果fmt恒等于'*'则
2362  返回:fmt先自加减start
2366  qualifier :
2368  qualifier等于0
2369  如果fmt恒等于'h'或Fast implementation of tolower() for internal usage. Do not use in your* code.恒等于'l'或fmt恒等于'z'或fmt恒等于't'则
2371  qualifier等于fmt自加
2373  如果qualifier恒等于'l'则
2374  qualifier等于'L'
2375  fmt先自加
2376  否则如果qualifier恒等于'h'则
2377  qualifier等于'H'
2378  fmt先自加
2384  number base, 8, 10 or 16 only 等于10
2386  :fmt恒等于'c'
2387  format_type enum 等于FORMAT_TYPE_CHAR
2388  返回:fmt先自加减start
2390  :fmt恒等于's'
2391  format_type enum 等于FORMAT_TYPE_STR
2392  返回:fmt先自加减start
2394  :fmt恒等于'p'
2395  format_type enum 等于FORMAT_TYPE_PTR
2396  返回:fmt先自加减start
2398  :fmt恒等于'%'
2399  format_type enum 等于FORMAT_TYPE_PERCENT_CHAR
2400  返回:fmt先自加减start
2403  :fmt恒等于'o'
2404  number base, 8, 10 or 16 only 等于8
2405  退出
2407  :fmt恒等于'x'
2408  flags to number() 或等于use lowercase in hex (must be 32 == 0x20)
2411  :fmt恒等于'X'
2412  number base, 8, 10 or 16 only 等于16
2413  退出
2415  :fmt恒等于'd'
2416  :fmt恒等于'i'
2417  flags to number() 或等于unsigned/signed, must be 1
2418  :fmt恒等于'u'
2419  退出
2421  :fmt恒等于'n'
2429  默认
2430  WARN_ONCE(1, "Please remove unsupported %%%c in format string\n", * fmt)
2431  format_type enum 等于FORMAT_TYPE_INVALID
2432  返回:fmtstart
2435  如果qualifier恒等于'L'则 format_type enum 等于FORMAT_TYPE_LONG_LONG
2437  否则如果qualifier恒等于'l'则
2438  BUILD_BUG_ON - break compile if a condition is true(FORMAT_TYPE_ULONG + unsigned/signed, must be 1 != FORMAT_TYPE_LONG)
2439  format_type enum 等于FORMAT_TYPE_ULONG flags to number() 按位与unsigned/signed, must be 1 的值
2440  否则如果qualifier恒等于'z'则
2441  format_type enum 等于FORMAT_TYPE_SIZE_T
2442  否则如果qualifier恒等于't'则
2443  format_type enum 等于FORMAT_TYPE_PTRDIFF
2444  否则如果qualifier恒等于'H'则
2445  BUILD_BUG_ON - break compile if a condition is true(FORMAT_TYPE_UBYTE + unsigned/signed, must be 1 != FORMAT_TYPE_BYTE)
2446  format_type enum 等于FORMAT_TYPE_UBYTE flags to number() 按位与unsigned/signed, must be 1 的值
2447  否则如果qualifier恒等于'h'则
2448  BUILD_BUG_ON - break compile if a condition is true(FORMAT_TYPE_USHORT + unsigned/signed, must be 1 != FORMAT_TYPE_SHORT)
2449  format_type enum 等于FORMAT_TYPE_USHORT flags to number() 按位与unsigned/signed, must be 1 的值
2450  否则
2451  BUILD_BUG_ON - break compile if a condition is true(FORMAT_TYPE_UINT + unsigned/signed, must be 1 != FORMAT_TYPE_INT)
2452  format_type enum 等于FORMAT_TYPE_UINT flags to number() 按位与unsigned/signed, must be 1 的值
2455  返回:fmt先自加减start
调用者
名称描述
vsnprintfvsnprintf - Format a string and place it in a buffer*@buf: The buffer to place the result into*@size: The size of the buffer, including the trailing null space*@fmt: The format string to use*@args: Arguments for the format string* This function generally