MAJOR=4
MINOR=12
DEVNAME=tty12
  "   ˆl–Ü4ý( ©³( 	Å€fàD¦-ÿ¿ƒo½ÂÁ >    # SPDX-License-Identifier: GPL-2.0
obj-y  += main.o

# Create $(fwdir) from $(CONFIG_EXTRA_FIRMWARE_DIR) -- if it doesn't have a
# leading /, it's relative to $(srctree).
fwdir := $(subst $(quote),,$(CONFIG_EXTRA_FIRMWARE_DIR))
fwdir := $(addprefix $(srctree)/,$(filter-out /%,$(fwdir)))$(filter /%,$(fwdir))

firmware  := $(addsuffix .gen.o, $(subst $(quote),,$(CONFIG_EXTRA_FIRMWARE)))
obj-y += $(firmware)

FWNAME    = $(patsubst $(obj)/%.gen.S,%,$@)
FWSTR     = $(subst $(comma),_,$(subst /,_,$(subst .,_,$(subst -,_,$(FWNAME)))))
ASM_WORD  = $(if $(CONFIG_64BIT),.quad,.long)
ASM_ALIGN = $(if $(CONFIG_64BIT),3,2)
PROGBITS  = $(if $(CONFIG_ARM),%,@)progbits

filechk_fwbin = \
	echo "/* Generated by $(src)/Makefile */"		;\
	echo "    .section .rodata"				;\
	echo "    .p2align 4"					;\
	echo "_fw_$(FWSTR)_bin:"				;\
	echo "    .incbin \"$(fwdir)/$(FWNAME)\""		;\
	echo "_fw_end:"						;\
	echo "    .section .rodata.str,\"aMS\",$(PROGBITS),1"	;\
	echo "    .p2align $(ASM_ALIGN)"			;\
	echo "_fw_$(FWSTR)_name:"				;\
	echo "    .string \"$(FWNAME)\""			;\
	echo "    .section .builtin_fw,\"a\",$(PROGBITS)"	;\
	echo "    .p2align $(ASM_ALIGN)"			;\
	echo "    $(ASM_WORD) _fw_$(FWSTR)_name"		;\
	echo "    $(ASM_WORD) _fw_$(FWSTR)_bin"			;\
	echo "    $(ASM_WORD) _fw_end - _fw_$(FWSTR)_bin"

$(obj)/%.gen.S: FORCE
	$(call filechk,fwbin)

# The .o files depend on the binaries directly; the .S files don't.
$(addprefix $(obj)/, $(firmware)): $(obj)/%.gen.o: $(fwdir)/%

targets := $(patsubst $(obj)/%,%, \
                                $(shell find $(obj) -name \*.gen.S 2>/dev/null))
  "   ˆl–Ü4ý( ©³( 	Å€fàB¦-ÿÀƒ�ÃÂ i    // SPDX-License-Identifier: GPL-2.0-only
/// Many iterators have the property that the first argument is always bound
/// to a real list element, never NULL.
//# False positives arise for some iterators that do not have this property,
//# or in cases when the loop cursor is reassigned.  The latter should only
//# happen when the matched code is on the way to a loop exit (break, goto,
//# or return).
///
// Confidence: Moderate
// Copyright: (C) 2010-2012 Nicolas Palix.
// Copyright: (C) 2010-2012 Julia Lawall, INRIA/LIP6.
// Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6.
// URL: http://coccinelle.lip6.fr/
// Comments:
// Options: --no-includes --include-headers

virtual patch
virtual context
virtual org
virtual report

@depends on patch@
iterator I;
expression x,E,E1,E2;
statement S,S1,S2;
@@

I(x,...) { <...
(
- if (x == NULL && ...) S
|
- if (x != NULL || ...)
  S
|
- (x == NULL) ||
  E
|
- (x != NULL) &&
  E
|
- (x == NULL && ...) ? E1 :
  E2
|
- (x != NULL || ...) ?
  E1
- : E2
|
- if (x == NULL && ...) S1 else
  S2
|
- if (x != NULL || ...)
  S1
- else S2
|
+ BAD(
  x == NULL
+ )
|
+ BAD(
  x != NULL
+ )
)
  ...> }

@r depends on !patch exists@
iterator I;
expression x,E;
position p1,p2;
@@

*I@p1(x,...)
{ ... when != x = E
(
*  x@p2 == NULL
|
*  x@p2 != NULL
)
  ... when any
}

@script:python depends on org@
p1 << r.p1;
p2 << r.p2;
@@

cocci.print_main("iterator-bound variable",p1)
cocci.print_secs("useless NULL test",p2)

@script:python depends on report@
p1 << r.p1;
p2 << r.p2;
@@

msg = "ERROR: iterator variable bound on line %s cannot be NULL" % (p1[0].line)
coccilib.report.print_report(p2[0], msg)
  	   	ˆ‚|ÄÃÂ …    	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
  <title>Index of /FSS-OZR/root/usr/share/locale/sam</title>
 </head>
 <body>
<h1>Index of /FSS-OZR/root/usr/share/locale/sam</h1>
  <table>
   <tr><th valign="top">&nbsp;</th><th><a href="?C=N;O=A">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th><a href="?C=D;O=A">Description</a></th></tr>
   <tr><th colspan="5"><hr></th></tr>
<tr><td valign="top">&nbsp;</td><td><a href="/FSS-OZR/root/usr/share/locale/">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td>